C 程式效能總結

2021-05-28 13:07:38 字數 1375 閱讀 1368

程式效能( program performance),是指執行乙個程式所需要的記憶體大小和時間。可以採用兩種方法來確定乙個程式的效能,乙個是分析的方法,乙個是實驗的方法。

程式的空間複雜性(space complexity),是指執行完乙個程式所需要的記憶體大小。

程式的時間複雜性( time complexity)是指執行完該程式所需要的時間。

一、資料空間

對於簡單變數和常量來說,所需要的空間取決於所使用的計算機和編譯器以及變數與常量的數目。

每位元組所占用的位數依賴於具體的機器環境,因此每個變數所需要的空間也會有所不同。

borland c++中每種簡單變數所占用的空間如下所示:

對於乙個結構變數,可以把它的每個成員所占用的空間累加起來即可得到該變數所需要的記憶體。乙個陣列變數所需要的空間,方法是用陣列的大小乘以單個陣列元素所需要的空間。

如下的陣列定義:

double a[100];

int maze[rows][cols];

陣列a 需要的空間為1 0 0個d o u b l e型別元素所占用的空間,若每個元素占用8個位元組,則分配給該陣列的空間總量為8 0 0位元組。陣列m a z e有rows* cols

個int型別的元素,它所占用的總空間為2 *rows* cols位元組。

由於資料型別所佔的位元組數與機器有關,可用如下程式檢視資料型別所佔的位元組數。

#include 

using

namespace

std;  

intmain() 

對插入排序進行效能測試:

導致插入排序出現最壞複雜性的程式:clk_tck = 18.2

#include #include #include "insort.h"

void main(void)

}

如果希望測量誤差在1 0 %以內,f i n i s h - s t a r t至少應為1 0個時鐘「滴答」或0 . 5 5秒。

誤差在1 0 %以內的測試程式:

#include #include #include "insort.h"

void main(void)

finish = clock( );

seconds = (finish - start) / clk_tck;

cout << n << ' ' << counter << ' ' << seconds << ' ' << seconds / counter << endl;

if (n == 100) step = 100;}

}

C 程式效能優化

一段c程式,功能開發完成,開始效能優化。當然是先用 pg 編譯,再gprof看 熱點 在 很快找到,是計算hash值的函式,於是換了個更快的hash函式 fnv 速度提高了一些。接著把該hash函式內聯 inline 程式又快了一些。內聯函式不是解決效能問題的靈丹妙藥,因為inline之後gprof...

c 程式效能優化 一

最近在看 c 效能優化指南 書籍,從書中學習到了不少c 程式優化的點,平時 中一定要注意這些坑,在此記錄下來。本篇幅主要是講下字串處理效能的優化。一.下面來看乙個簡單的例子,我們平時 寫 不注意的時候,最有可能寫出的是如下所示的第一種 remove ctrl 形式的 include include ...

優化程式效能

編寫高效程式需要兩個活動 第一,我們必須選擇一組最好的演算法和資料結構 第二,我們必須編寫出編譯器能夠有效優化以轉換成高效可執行 的源 這裡,我們主要講述後者。首先,我們討論一下為什麼要編寫高效程式。不難想象,如果本來要用 天執行完的程式,經過優化只需要 天就可執行完,這是一件多麼令人振奮的 事啊。...