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

时间:2011-11-04 20:45:46

标签: c++ timer release 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;

我调试程序时效果很好,但是当我运行发布版本时 stop比start更小的值,结果是负数。

有什么想法吗?

1 个答案:

答案 0 :(得分:11)

start的分配不应该在assert声明中。 assert通常是发布版本中的无操作。因此,在调试版本中,将执行语句start=clock(),但在发布版本中,它不会。因此,有可能(取决于早期代码和start的声明)它没有被初始化。通常希望避免使用具有副作用的assert语句;它可能导致调试和发布版本之间的细微差别/错误。

最好像这样写:

start = clock();
assert(start != -1);