1. 程式人生 > >提升程式效能的一些方法

提升程式效能的一些方法

  終於會用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倍多