如何解决使用clock的执行时间给出了0个时钟周期
我希望能够对应用程序特定部分的执行时间进行计时。
以下是简化的代码,以显示我无法理解的内容:
#include <stdio.h>
#include <time.h>
void fun(){
double result = 0;
for (int i = 1; i<200;i++){
for (int j = 1; j<200;j++){
result += i/j; // Random mathematical expression
}
}
}
int main(int argc,char const *argv[])
{
clock_t start,end;
start = clock();
fun();
end = clock();
clock_t clocks_taken = (end - start);
double total_time = ((double)(end - start)/CLOCKS_PER_SEC)*1000; //millisec
printf("Clock cycles: %d. Total time: %lf ms",clocks_taken,total_time);
}
给出输出:
Clock cycles: 0. Total time: 0.000000 ms
据我所知,一个时钟周期是处理器一次执行,而嵌套的forloop应该需要数百个周期?还是我误会了?
即使当前示例没有执行此任务,我也需要能够测量大约1毫秒的任务的执行时间。如果有问题,我将在Windows中构建和运行该应用程序。
解决方法
您无需使用result
,因此不需要计算它。由于您的函数无法执行任何操作,因此几乎不需要任何时间。对“玩具”代码进行基准测试毫无意义。
请注意,“时钟周期”不是CPU时钟周期。它们是某种CPU使用计时器的周期,它可能以惊人的大增量递增。您平台上的CLOCKS_PER_SEC
是什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。