C/C++中如何計算程式啟動並執行時間

來源:互聯網
上載者:User

標籤:一個   資料   很多   除法   ++   主程式   安裝windows   一點   使用   

一個程式的功能通常有很多種方法來實現,怎麼樣的程式才算得上最優呢?舉個例子,如果實現同一個功能的兩個程式,一個一點按鈕就給出運行結果,而另一個則需要漫長的時間去等待,就像安裝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<iostream.h>
#include<time.h>
void main()
{
   clock_t start,finish;
   double totaltime;
   start=clock();

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

   finish=clock();
   totaltime=(double)(finish-start)/CLOCKS_PER_SEC;
   cout<<"\n此程式的已耗用時間為"<<totaltime<<"秒!"<<endl;
}

  如此這般,我們就可以得出程式的已耗用時間然後進行比較,很簡單,很方便吧。
  可能有人要問,如果兩個程式的已耗用時間都少於一秒,我們根本就感覺不到,有比較的意義嗎?回答是有!因為我們寫的可能只是一個很大的程式中的一個功能函數,而在主程式中可能會反覆調用這個功能函數,如果一個功能函數比另一個實現同樣一個功能函數運行快0.01秒,把這兩個函數在主函數中分別調用1000次,效果是顯而易見的。
  好了,這是我的一些小經驗,希望能給我的LP和其他的朋友們提供一點小小的協助

 

轉自:http://www.cnblogs.com/zhiqiangliu/p/4904365.html

C/C++中如何計算程式啟動並執行時間

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.