共有五種計算時間的方式分別如下:
//需要包含 「」
large_integer a, a_, nfrequency;
double timeaccuracy = 1000;
queryperformancefrequency(&nfrequency);
queryperformancecounter(&a);
sleep(period);
queryperformancecounter(&a_);
printf("%.8f\n", timeaccuracy * ((double)a_.quadpart - a.quadpart) / nfrequency.quadpart);
double b = gettickcount();
sleep(period);
double c = gettickcount();
printf("%.8f\n", (c-b));
//需要包含"opencv2/core.hpp"
double d = cvgettickcount();
sleep(period);
double e = cvgettickcount();
printf("%.8f\n", (e - d) / cvgettickfrequency()/1000);
//需要包含""
long f = clock();
sleep(period);
long g = clock();
printf("%.8f\n", ((double)g - f) / clocks_per_sec*1000);
//需要包含",,"
auto h = std::chrono::system_clock::now();
sleep(period);
auto i = std::chrono::system_clock::now();
std::chrono::durationdiff = i - h;
printf("%.8f\n", diff.count()*1000);
以上輸出均為毫秒.
上述輸出全部為毫秒,在win7 sp1和64位機器,vs2013,release下。
當period設定為1,當10次迴圈求平均,輸出為:
0.91895976
1.60000000
1.60000000
1.00481249
1.00000000
當period設定為1,當25次迴圈求平均,輸出為:
0.98673408
0.64000000
0.64000000
0.99715482
1.00000000
當period設定為1,當50次迴圈求平均,輸出為:
0.99323125
0.94000000
0.94000000
0.99962580
1.00000000
從穩定性和精確性的角度來說:
方式5>方式4>方式1>方式3>方式2
在c中,優先使用方式4,其次是方式1
在c++中,優先使用方式5,其次是4和1,不精確計量情況下,可以呼叫opencv,即使用方式3
C C 函式呼叫的幾種方式
我們知道,呼叫函式時,計算機常用棧來存放函式執行需要的引數,由於棧的空間大小是有限的,在 windows 下棧是向低位址擴充套件的資料結構,是一塊連續的記憶體區域。這句話的意思是棧頂的位址和棧的最大容量是系統預先規定好的,windows下棧的大小是2m 也有的說是1m 如果申請的空間超過棧的剩餘空間...
幾種時間同步的方式
在效能測試環境的建立過程中,有時會遇到測試環境的各台裝置 伺服器和測試終端 之間的時間同步問題,如某個效能測試專案中,整個測試環境包括10臺伺服器和30多台pc機,測試過程中採用模擬程式和腳步記錄應用的資料報處理時間等資料,要求各台裝置時間嚴格同步。一般來說,在測試環境的多台裝置間實現時間同步的方法...
C C 函式呼叫的幾種方式總結
目錄 1 為什麼需要指定函式呼叫方式?2 常見的函式呼叫方式 2.1 stdcall 2.2 cdecl 2.3 fastcall 2.4 thiscall 呼叫函式時,計算機常用棧來儲存傳遞給函式的引數。在引數傳遞中,有兩個重要的問題必須要明確說明 1.當引數個數多於乙個時,按照什麼順序把引數壓入...