提升程式效能的一些方法
阿新 • • 發佈:2019-01-01
終於會用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倍多