如何優化C程序性能

一段c程序,功能開發完成,開始性能優化。下面是小編爲大家搜索整理的如何優化C程序性能,希望大家能有所收穫,更多精彩內容請及時關注我們應屆畢業生考試網!

如何優化C程序性能

當然是先用 -pg 編譯,再gprof看“熱點”在哪裏,很快找到,是計算hash值的函數,於是換了個更快的hash函數——fnv ( /chongo/tech/comp/fnv/),速度提高了一些。接着把該hash函數內聯(inline),程序又快了一些。內聯函數不是解決性能問題的靈丹妙藥,因爲inline之後gprof就看不到該函數的調用情況,也就不好找真正的性能瓶頸了。

接着把幾個常用循環中的變量聲明爲register,即優先使用寄存器,嗯,有點效果,但不是很明顯。管它的`,快一點是一點。

最後把代碼部分優化完,改編譯參數了:

將 -O2 改爲 -O3 ,跑了單元測試,沒問題,性能好一點

加 -march=nocona ,性能又好一點(因爲開發的程序只在服務器上跑,而公司的服務器都裝intel的CPU,而且都是新到貨,基本都是nocona平臺,所以加上沒問題)

加 -minline-all-stringops , 據說這個選項適合含有memset、memcpy語句較多的程序,這個正合我意,加上之後性能有好了一點

全部優化完了,查詢400萬的數據,從原先的4.9秒變爲4.1秒,16%左右的性能提升,雖然不卓著,但性能就是錢啊,省錢是多麼快樂的事啊....

  【相關閱讀】

  結構成員訪問方法有哪些

[cpp] view plaincopy

#include "stdio.h"

#include "string.h"

#include

main ()

{

struct student{

int num;

char * name;

int score;

}stu;

struct student *p=&stu;

=1;

(*p)="tom";

p->score=78;

printf("%dn",p->num);

printf("%sn",p->name);

printf("%dn",p->score);

}