在C中运行程序时,最佳/最有效的时间测量方法是什么?

时间:2019-04-17 21:20:35

标签: c performance

每次插入输入时如何记录程序的运行时间?我尝试过这种特殊方法:

clock_t tStart = clock(),tEnd;

在打印输出后:

tEnd = clock();
printf("Time taken: %.6fs\n", (double)(tEnd - tStart) / CLOCKS_PER_SEC);

但是,有时我在计算毫秒数时最终只能得到一堆0。是否有任何方法可以改善这一点?

3 个答案:

答案 0 :(得分:3)

  

有什么方法可以改善这一点吗?

如果您没有更好的计时器(如jspcal的答案所示),那么另一种解决方案是将相同的操作重复多次,然后将经过的时间除以重复次数:

const int REPS = 10000;
clock_t tStart = clock(),tEnd;
for (int i = 0; i < REPS; i++) {
    // do your work here
}
tEnd = clock();
double time = (double)(tEnd - tStart)/REPS;
printf("Time taken: %.6fs\n", time / CLOCKS_PER_SEC);

答案 1 :(得分:2)

也许尝试使用更高分辨率的计时器,该计时器可能在您的平台上可用:

find('[name="vehicle_attrs[position_count]"]').find('option', text: /\AFront\z/).select_option

答案 2 :(得分:1)

在unix中,使用time,它分叉并执行程序,并在孩子退出后执行get_rusage()

因此,您不必自己检测程序。


plasser@pisbak:$ time ./a.out omg.dat 

real    0m10.276s
user    0m9.986s
sys 0m0.291s
plasser@pisbak:$