1. 程式人生 > >程式執行時間為0的問題

程式執行時間為0的問題

     今天為了檢測自己某些功能模組的時間消耗,發現使用了好幾種方法,得到的時間都是0 ,後來才發現是因為消耗的時間太少了,一般常用的方法得到的時間精度不夠,下面分享一下我的學習歷程。

1.一開始使用GetTickCount();,測試結果為0,具體程式碼:

   DWORD dwStart = GetTickCount(); 
   DWORD dwStart = timeGetTime();


   m_String=getSystemName().c_str();


   DWORD dwUsed = timeGetTime();  
    m_Time = dwUsed - dwStart;


2.使用 timeGetTime()函式,需要新增#include <Mmsystem.h>,自己測試結果為0

 DWORD dwStart = timeGetTime(); //開始時間
     m_String=getSystemName().c_str();
      DWORD dwUsed = timeGetTime();	 //結束時間
    m_Time8 = dwUsed - dwStart; //消耗時間

還使用了clock()函式,也不行,最後在網上查到了一個以納秒計的函式,1秒=10億納秒。總算結果測試不為零了。具體程式碼:

 先再標頭檔案內定義一行內函數:
      inline unsigned GetCycleCount() { __asm _emit 0x0F __asm _emit 0x31 } 
  實際使用:
            unsigned long t1,t2; 
	   t1 = (unsigned long)GetCycleCount(); //開始時間
	   m_String = getSystemName().c_str();
	   t2 = (unsigned long)GetCycleCount();
	   m_Time = t2-t1;

結果截圖: