如何在C ++中获得TIME,最好是多平台


How to get TIME in C++, preferably multi platform

本问题已经有最佳答案,请猛点这里访问。

我一直在使用Windows的GetTickCount(),但我读过它的性能/分辨率很差,我想问一下最好的方法是什么。

我尝试使用库,但它没有达到毫秒或微秒,我需要达到那个精度的东西。

谢谢!


如果使用C ++ 11,则可以使用std::chrono::high_resolution_clock

Precision是一个实现细节,例如它应该在Windows上实现为QueryPerformanceCounter

1
2
3
4
5
6
7
8
9
10
11
#include <chrono>
#include <iostream>

int main(int argc, char *argv[])
{
   auto t1 = std::chrono::high_resolution_clock::now();
   auto t2 = std::chrono::high_resolution_clock::now();
   std::cout <<"It took" << std::chrono::nanoseconds(t2 - t1).count() <<" nanoseconds" << std::endl;

   return 0;
}


如果您想要跨平台兼容性,ctime中的clock()函数(请参阅文档)可能是您最好的选择。 它在Visual Studio中以毫秒为单位(虽然不能保证它实际上以1毫秒的增量前进),并且在其他编译器中可能类似。

每个平台都有自己的方式来获得更高分辨率的时序。 在Windows上有timeGetTime()QueryPerformanceCounter()。 你可以在线阅读它们; 关于每个(这里是一个)的文章很多。 如果您关注其他平台,则必须谷歌或咨询他们的文档,以获得他们自己的高分辨率计时功能。


看看这个,它的表现似乎更好
http://www.boost.org/doc/libs/1_38_0/doc/html/date_time.html