在C++中计算经过时间的最准确方法是什么?我使用clock()来计算这个,但我感觉这是错误的,因为我得到0 ms 90%的时间和15 ms其余部分对我来说没什么意义.
即使它非常小并且非常接近0 ms,是否有更精确的方法可以给出精确的值而不是向下舍入0 ms?
clock_t tic = clock();
/*
main programme body
*/
clock_t toc = clock();
double time = (double)(toc-tic);
cout << "\nTime taken: " << (1000*(time/CLOCKS_PER_SEC)) << " (ms)";
Run Code Online (Sandbox Code Playgroud)
谢谢
使用C++ 11,我会使用
#include <chrono>
auto t0 = std::chrono::high_resolution_clock::now();
...
auto t1 = std::chrono::high_resolution_clock::now();
auto dt = 1.e-9*std::chrono::duration_cast<std::chrono::nanoseconds>(t1-t0).count();
Run Code Online (Sandbox Code Playgroud)
以秒为单位的经过时间.
对于2011之前的C++,您可以QueryPerformanceCounter()在Windows或gettimeofday()Linux/OSX上使用.例如(这实际上是C,而不是C++):
timeval oldCount,newCount;
gettimeofday(&oldCount, NULL);
...
gettimeofday(&newCount, NULL);
double t = double(newCount.tv_sec -oldCount.tv_sec )
+ double(newCount.tv_usec-oldCount.tv_usec) * 1.e-6;
Run Code Online (Sandbox Code Playgroud)
以秒为单位的经过时间.