【发布时间】:2016-08-17 11:10:41
【问题描述】:
我正在使用这种方法:Measure execution time in C (on Windows) 来测量所有线程的执行时间。我在 Windows 上,我正在使用 VC++。
类似这样的:
//initialize start, end, frequency
std::thread thread1(...);
// and so on I initialise all the threads
thread1.join();
//join all threads
//time = (start-end)/frequency
printf(time);
我多次运行它,我经常得到不同的执行时间。我有 30% 的变化。(这意味着我得到的值在 100 到 70 之间)。我不明白为什么? 30% 的变化不小。
谢谢
【问题讨论】:
-
你如何衡量时间?如果您测量的是天文数字,请考虑测量处理器时间,因为后者取决于系统负载
-
时间测量分辨率受调度和其他因素的限制。线程运行时间越短,你的时间就越不准确。我会平均跑很多次。
-
@alexeykuzmin0 与我链接的问题的答案相同,我复制粘贴。使用 QueryPerformanceCounter。
-
您测量的是“挂钟”时间,而不是您自己的流程所花费的时间。
-
@molbdnilo 我应该如何衡量在我自己的过程中花费的时间?
标签: c++ multithreading