clock()在调试版上运行良好但在发布时不起作用(C++ VS2010)

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)