C程序的执行时间我有一个C程序,旨在在几个处理器上并行运行。我需要能够记录执行时间(可能是1秒到几分钟)。我已经搜索了答案,但他们似乎都建议使用该clock()函数,然后计算程序所用的时钟数除以该Clocks_per_second值。我不确定如何Clocks_per_second计算价值?在Java中,我只是在执行之前和之后以毫秒为单位。C中有类似的东西吗?我看过了,但我似乎无法找到比第二种解决方案更好的方法。我也知道分析器是一个选项,但我希望自己实现一个计时器。谢谢
3 回答
喵喔喔
TA贡献1735条经验 获得超5个赞
CLOCKS_PER_SEC是一个声明的常量<time.h>。要获取C应用程序中任务使用的CPU时间,请使用:
clock_t begin = clock();
/* here, do your time-consuming job */
clock_t end = clock();
double time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
请注意,这会将时间作为浮点类型返回。这可能比一秒钟更精确(例如,您测量4.52秒)。精度取决于架构; 在现代系统上你很容易获得10毫秒或更低,但在较旧的Windows机器上(从Win98时代)它接近60毫秒。
clock()是标准C; 它“无处不在”。有系统特定的功能,例如getrusage()类Unix系统。
Java System.currentTimeMillis()并没有衡量同样的事情。它是一个“挂钟”:它可以帮助您测量程序执行所花费的时间,但它并不能告诉您使用了多少CPU时间。在多任务系统(即所有这些系统)上,这些系统可能大不相同。
- 3 回答
- 0 关注
- 522 浏览
添加回答
举报
0/150
提交
取消