C C 中如何計算程式執行的時間

2021-09-02 01:32:16 字數 1410 閱讀 8653

** 

乙個程式的功能通常有很多種方法來實現,怎麼樣的程式才算得上最優呢?舉個例子,如果實現同乙個功能的兩個程式,乙個一點按鈕就給出執行結果,而另乙個則需要漫長的時間去等待,就像安裝windows xp一樣(呵呵,太誇張了吧),你會去使用哪個程式呢?毋庸置疑,最優程式的第一條法則就是:程式的執行速度要快。

那麼,既然乙個程式能用多種方法來實現,我又如何知道哪種方法是最優的呢?有些程式是顯而易見的,你把它執行一下,乙個程式要3秒,乙個要1秒,你當然能感覺出來。如果都在一秒之內呢,你又可以看申請的記憶體空間的多少,運算的資料大小,運算過程的簡單複雜,有時也能分辨出哪個程式最好,可是有的時候,卻不是那麼容易看出來,比如它比另乙個程式少定義乙個變數,可是它又比那另乙個程式多用幾個除法,那麼你就如何比較它們的執行速度呢?辦法只有乙個——計時!

c++中的計時函式是clock(),而與其相關的資料型別是clock_t(標頭檔案是time.h)。函式定義原型為:clock_t clock(void);

這個函式返回從「開啟這個程式程序」到「程式中呼叫clock()函式」時之間的cpu時鐘計時單元(clock tick)數,在msdn中稱之為掛鐘時間(wal-clock)。

其中clock_t是用來儲存時間的資料型別,在time.h檔案中,我們可以找到對它的定義:

#ifndef _clock_t_defined

typedef long clock_t;

#define _clock_t_defined

#endif

很明顯,clock_t是乙個長整形數。另外在time.h檔案中,還定義了乙個常量clocks_per_sec,它用來表示一秒鐘會有多少個時鐘計時單元,因此,我們就可以使用公式clock()/clocks_per_sec來計算乙個程序自身的執行時間。

下面就上面的知識給大家舉個例子幫助大家理解。

#include#includevoid main()

{   clock_t start,finish;

double totaltime;

start=clock();

……                     //把你的程式**插入到這裡面

finish=clock();

totaltime=(double)(finish-start)/clocks_per_sec;

cout<<"\n此程式的執行時間為"<

如此這般,我們就可以得出程式的執行時間然後進行比較,很簡單,很方便吧。

可能有人要問,如果兩個程式的執行時間都少於一秒,我們根本就感覺不到,有比較的意義麼?回答是有!因為我們寫的可能只是乙個很大的程式中的乙個功能函式,而在主程式中可能會反覆呼叫這個功能函式,如果乙個功能函式比另乙個實現同樣乙個功能函式執行快0.01秒,把這兩個函式在主函式中分別呼叫1000次,效果是顯而易見的。

好了,這是我的一些小經驗,希望能給我的lp和其他的朋友們提供一點小小的幫助

c c 計算程式執行時間

在c c 中經常需要獲取某段程式的執行時間,那麼如何來實現呢?使用time函式計算某段程式執行時間的 如下 time t start time time start time time consuming code time t end time time end time time t durat...

C C計算程式執行時間

clock t clock void 簡單而言,就是該程式從啟動到函式呼叫占用cpu的時間。這個函式返回從 開啟這個程式程序 到 程式中呼叫clock 函式 時之間的cpu時鐘計時單元 clock tick 數,在msdn中稱之為掛鐘時間 wal clock 若掛鐘時間不可取,則返回 1。其中clo...

計算程式執行的時間

通常我們在寫程式後常常需要知道某一段 或者這個程式執行了多長時間,這樣有利於我們計算程式的效率,這篇文章講述的就是這個問題。首先,我們需要知道乙個結構 struct timeval 這個結構代表的是時間值,我們利用函式 gettimeofday 可以對其進行填充,其中的第乙個字段代表的是秒,第二個字...