Dan*_*man 2 c++ release timer clock
这是我的代码:
// Start performance test clock
assert((start=clock())!=-1);
// Some reading and writing methods
// Get stop time
stop = clock();
cout << stop << endl;
// Calculate operation time
double result = (double)(stop-start)/CLOCKS_PER_SEC;
// Print result
cout << "--> Finished analysing in " << result << "s" << endl;
Run Code Online (Sandbox Code Playgroud)
我调试程序时效果很好,但是当我运行发布版本时,stop会收到比start更小的值,结果是负数.
有任何想法吗?
Mar*_*ins 11
转让start不应该在assert声明中. assert通常是发布版本中的无操作.因此在调试版本中,语句start=clock()将被执行,但在发布版本中,它不会.所以有可能(取决于早期的代码和声明start)它没有被初始化.通常希望避免使用assert具有副作用的陈述; 它可能导致调试和发布版本之间的细微差异/错误.
写它可能会更好:
start = clock();
assert(start != -1);
Run Code Online (Sandbox Code Playgroud)