我试图通过测量以毫秒为单位的实际经过时间与以毫秒为单位的 cpu 时间来在 c++ 中进行一些性能测量。这就是我的代码的样子:
auto start = std::chrono::high_resolution_clock::now();
unsigned begin = clock();
// some computationally expensive task
auto finish = std::chrono::high_resolution_clock::now();
unsigned end = clock();
(finish - start).count();
int duration = std::chrono::duration_cast<std::chrono::milliseconds>(finish - start).count();
int cpu_duration = 1000*(end - begin)/(CLOCKS_PER_SEC);
现在我希望 cpu 时间值低于系统时间,因为线程可能会被中断。但是,cpu时间比实际时间高2-3倍。我做错了什么还是我误解了cpu时间的概念?