輕鬆測量經過的時間
問題:
使用以下命令測量程序中的時間time(),為什麼之前和之後的值可能還是相同?
解釋:
time() 返回自紀元以來的當前時間(以秒為單位)。如果要測量的時間跨度很短,前後值之間的差異可能會太小而無法偵測到。
解:
要準確測量短時間時間跨度,考慮使用替代方法:
C 結構化時間測量:
struct timeval startTV, endTV; gettimeofday(&startTV, NULL); // Execute time-consuming tasks gettimeofday(&endTV, NULL); timersub(&endTV, &startTV, &diff); printf("**time taken = %ld %ld\n", diff.tv_sec, diff.tv_usec);
C 11 風格精確時間測量:
#include <chrono> std::chrono::steady_clock::time_point begin = std::chrono::steady_clock::now(); // Execute time-consuming tasks std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now(); std::cout << "Time difference = " << std::chrono::duration_cast<std::chrono::microseconds>(end - begin).count() << "[µs]" << std::endl; std::cout << "Time difference = " << std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin).count() << "[ns]" << std::endl;
以上是為什麼「time()」有時在短任務之前和之後返回相同的值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!