我正在研究一个需要详细计时信息的C++应用程序,直到毫秒级.
我们打算使用标准time()
函数将时间收集到第二精度
.我们还要收集自上一秒给出的毫秒数time()
.
有谁知道获取这些信息的便捷方法?
如果底层平台支持Boost.DateTime,则具有毫秒和纳秒表示.虽然它使用特定于平台的代码,但它会将这些详细信息保留在您的代码之外.
如果这是一个大问题,他们确实有另一种方式做独立于亚平台的亚秒级分辨率. 这个页面下面几段讨论如何做到这一点.
(来自页面)
例如,假设我们想要使用表示十分之一秒的计数来构造.也就是说,每个刻度是0.1秒.
int number_of_tenths = 5; //create a resolution independent count -- divide by 10 since there are //10 tenths in a second. int count = number_of_tenths*(time_duration::ticks_per_second()/10); time_duration td(1,2,3,count); //01:02:03.5 //no matter the resolution settings
由于ANSI C没有定义标准的毫秒精确时间函数,因此没有可解决此问题的可移植解决方案.如果您使用的是Windows,则可以使用GetTickCount(),timeGetTime()或QueryPerformanceCounter()/ QueryPerformanceFrequency().请记住,这些具有不同的准确性和不同的运行时成本.
其他操作系统中还有其他类似的功能; 我不确定它们是不是我的头脑.