将clock_t转化为秒值在Windows与Linux平台下的差别



作者: theset  出自: http://www.linuxdiyf.com
一样平凡巨大写测试措施的时分常常要计算措施执行的时辰,尤其是近来训练Intel多核编程时,需求判断翻开openmp参数与否的执行时辰的对比。

平凡代码是如许写的:


#include
clock_t start, stop;
....
start = clock();
do_something();
stop = clock();
printf("%f", (double)(stop-start)/1000.0) ;
.....

大概是求以后时辰的秒值:

double t = (double) clock()/1000.0;

但是如许的代码在Windows平台下是正确的(固然会如许写也是因为上Intel培训课时,例程都是这么写的),而到了Linux平台下,这个措施就错了,会发明时辰一下多了1000倍。

究竟上,clock_t的值转换为秒应该是除以CLOCKS_PER_SEC这个宏,而这个宏在Windows平台下是1000,而到了Linux平台下便是1000000了。

因此措施正确的写法是:

#include
clock_t start, stop;
....
start = clock();
do_something();
stop = clock();
printf("%f", (double)(stop-start)/(double)CLOCKS_PER_SEC) ;
.....

如许才干担保措施在跨平台移植时的正确性。




版权声明: 原创作品,批准转载,转载时请务必以超链接情势标明文章 原始因由 、作者信息和本声明。不然将追查执法责任。

原文地址:https://www.cnblogs.com/zgqjymx/p/1973802.html