我正在尝试用C++编写的代码.我有一个内部和外部循环,我想分开时间,但同时.由于某种原因,当我这样做时,其中一个实例返回1.84467e + 13并且总是这个确切的数字.
为什么会这样?
这是一个在我的机器上复制效果的最小工作示例:
#include#include #include using namespace std; int main() { long int i, j; clock_t start, finish, tick, tock; double a = 0.0; double adding_time, runtime; start = clock(); for(i=0; i<10; i++) { a=0.0; tick =clock(); for(j=0; j<10000000; j++) { a+=1; } tock= clock(); adding_time = (double)(tick - tock)/CLOCKS_PER_SEC; cout << "Computation time:" << adding_time << endl; } finish = clock(); runtime = (double)(finish - start)/CLOCKS_PER_SEC; cout << "Total computation time:" << runtime << endl; }
Jerry Coffin.. 12
你clock_t
显然是一个无符号的64位类型.
你正在考虑tick - tock
,之后tock
测量的地方,所以如果两者之间有任何差异,那么它会尝试产生一个负数 - 但由于它是一个无符号类型,所以它会变得接近最大数字可以用该类型表示. tick
显然,你确实想要使用tock-tick
.
你clock_t
显然是一个无符号的64位类型.
你正在考虑tick - tock
,之后tock
测量的地方,所以如果两者之间有任何差异,那么它会尝试产生一个负数 - 但由于它是一个无符号类型,所以它会变得接近最大数字可以用该类型表示. tick
显然,你确实想要使用tock-tick
.