程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> c++函數執行時間

c++函數執行時間

編輯:C++入門知識

計算函數的執行時間,粒度比較小,往往也能從中發現項目代碼的瓶頸,及時發現問題來提升系統的性能。

c++代碼時間的估算首先考慮幾個時間函數:clock_gettime( ) 、gettimeofday()、_ftime()、time(),其中clock_gettime( ) 提供了納秒級的精確度,更加准確,可以選用。

同時要考慮到往函數注入時間計算函數的時候,對於原代碼要考慮易用性,盡量使用配置或者宏等形式來簡單設置便能做時間統計,下面的例子使用的是加上編譯宏這個方法。

例子:

#ifdef DEBUG_CODES_TIME
void timer_start(timespec *aStartTime)
{
clock_gettime(CLOCK_REALTIME, aStartTime);
}
long timer_end(timespec *aStartTime)
{
timespec endTime;
clock_gettime(CLOCK_REALTIME, &endTime);
long totalTimeMs = (endTime.tv_sec * 1000 + endTime.tv_nsec / 1000000) - (aStartTime->tv_sec * 1000 + aStartTime->tv_nsec / 1000000);
return totalTimeMs;
}
__attribute((constructor)) void timing_init()
{
;//... ... 針對具體情況進行初始化 }
#else
#define timer_start(ts)
#define timer_end(ts) -1
#endif

int main()
{
timespec ts;
timer_start(&ts);
for(int i=0; i<1000000; ++i);
long ret = timer_end(&ts);
printf("Result: %ld \n",ret);
return 0;
} $g++ test_timer.c -DDEBUG_CODES_TIME -lrt $./a.out (debug) initialize timing clock to 0.010000 seconds
Result: 4 $g++ test_timer.c $./a.out Result: -1

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved