chrono:high_resolution_clock随机产生0毫秒或〜15毫秒的运行时间

时间:2019-05-17 21:46:57

标签: c++ chrono

我正在尝试测量我的mergesort实现的运行时间,但是chrono:high_resolution_clock产生不一致的结果。以下是我的主要功能(为简洁起见,省略了主要调用的两个功能):

int main() 
{ 
    int size = 50000;

    int arr[size] = {};

    random_array(arr, size);

    int arr_size = sizeof(arr)/sizeof(arr[0]); 

    auto start = chrono::high_resolution_clock::now();

    mergeSort(arr, 0, arr_size - 1); 

    auto finish = chrono::high_resolution_clock::now();

    chrono::duration<double> elapsed = finish - start;

    cout << "\nElapsed time: " << elapsed.count() * (1000) << " ms\n\n";

    return 0;
}

在多次运行可执行文件后,输出大约为15 ms或恰好为0 ms。 15 ms似乎是合理的,但是为什么在两次执行之间随机产生0 ms?

Windows命令提示符处的示例输出:

C:\Users\Spencer\Desktop>g++ -o lab1 lab1.cpp

C:\Users\Spencer\Desktop>lab1

Elapsed time: 0 ms


C:\Users\Spencer\Desktop>lab1

Elapsed time: 0 ms


C:\Users\Spencer\Desktop>lab1

Elapsed time: 15.653 ms


C:\Users\Spencer\Desktop>lab1

Elapsed time: 15.515 ms


C:\Users\Spencer\Desktop>lab1

Elapsed time: 0 ms


C:\Users\Spencer\Desktop>lab1

Elapsed time: 0 ms


C:\Users\Spencer\Desktop>lab1

Elapsed time: 15.487 ms

0 个答案:

没有答案