这是我的代码:
// 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更小的值,结果是负数。
有什么想法吗?
答案 0 :(得分:11)
start
的分配不应该在assert
声明中。 assert
通常是发布版本中的无操作。因此,在调试版本中,将执行语句start=clock()
,但在发布版本中,它不会。因此,有可能(取决于早期代码和start
的声明)它没有被初始化。通常希望避免使用具有副作用的assert
语句;它可能导致调试和发布版本之间的细微差别/错误。
最好像这样写:
start = clock();
assert(start != -1);