C C 測量時間的幾種方式

2021-07-24 23:38:57 字數 1636 閱讀 7317

共有五種計算時間的方式分別如下:

//需要包含 「」

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.當引數個數多於乙個時,按照什麼順序把引數壓入...