作者: theset  

一样平凡巨大写测试措施的时分常常要计算措施执行的时辰,尤其是近来训练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) ;

.....


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





版权声明:

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