提升程序性能的一些方法

优化程序性能的技巧
  终于会用markdown了,正儿八经写篇博客吧!
  众所周知,使用高效的算法和数据结构可以有效改善程序的性能,最近看csapp,里面介绍了不少在算法和数据结构以下的层面,如何优化程序。这些方法对程序性能不会有飞跃的提升,但是在算法和数据结构都已经被充分良好优化的程序中,使用这些方法还可以进一步提升程序的时间和空间性能。这些方法虽然不能将时空复杂度做出优化,但合理的使用这些方法,或者是避免一些误区,有时可以将性能提升几倍之多。
  1.写局部性好的程序。一般来说,局部性好的程序会比局部性差的程序有更加良好的性能。
示例:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define SIZE 10000
char a[SIZE + 1][SIZE + 1];
int main(void)
{

    clock_t start = clock();
    for (int i = 1; i <= SIZE; i++)
    {
        for (int j = 1; j <= SIZE; j++)
        {
            a[i][j] = 0;
        }
    }
    clock_t end = clock();;
    printf("局部性良好:%d\n", end - start);


    start = clock();;
    for (int i = 1; i <= SIZE; i++)
    {
        for (int j = 1; j <= SIZE; j++)
        {
            a[j][i] = 0;
        }
    }
    end = clock();;
    printf("局部性很差:%d\n", end - start);
    return 0;
}

输出:
。

我们可以看出,在这种比出较极端的情况下,局部性相差比较多的程序性能之间可以相差2倍多
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值