获得更精确的票务计数值

C++ Getting more precise tickcount values

本文关键字:      更新时间:2023-10-16

我在c++中使用Tick Count计时一些操作的性能:

DWORD tstart = GetTickCount();                  
{                                           
    //...Some Operation...
}                                           
DWORD tend = GetTickCount();                        
double tt = (double) (tend-tstart)/(double) 1000;   
std::cout << "Exec Time: " << tt << " Seconds" << std::endl;

然而,这只给我值>= 0.015…

任何低于0.015的值似乎都被简单地打印为0..

还有其他方法可以得到更高的精度吗?

使用std::chrono::high_resolution_clock作为最高分辨率

typedef std::chrono::high_resolution_clock Clock;
auto start = Clock::now();
... do some work ...
auto stop = Clock::now();
std::cout << stop-start << 'n';

使用cout格式化器

include <iomanip>
std::cout << "Exec Time: " << std::setprecision(12) << tt << " Seconds" << std::endl;
http://www.cplusplus.com/reference/iomanip/setprecision/

我还建议在c++ 11中使用chrono new。
#include <chrono>
#include <iomanip>
std::chrono::system_clock::time_point begin_time = std::chrono::system_clock::now();
... work ...
std::chrono::system_clock::time_point end_time = std::chrono::system_clock::now();
long long elapsed_seconds = std::chrono::duration_cast<std::chrono::seconds>(end_time-begin_time).count();
std::cout << "Duration (min:seg): " << std::setw(2) << std::setfill('0') << (elapsed_seconds / 60) << ":" << std::setw(2) << std::setfill('0') << (elapsed_seconds % 60) << std::endl;
相关文章:
  • 没有找到相关文章