获取时间c++
Posted
技术标签:
【中文标题】获取时间c++【英文标题】:Obtain time c++ 【发布时间】:2013-11-04 11:59:04 【问题描述】:我正在尝试将 Windows c++ 函数转换为可移植函数。
该函数的目标是获得以秒为单位的参考 CPU 时间。 Windows功能使用QueryPerformanceCounter
和QueryPerformanceFrequency
,不能移植到mac,所以我尝试使用std::chrono::high_resolution_clock
,但是我不明白它是如何工作的。
我已有的功能如下:
double GetSeconds(void)
double sec;
LARGE_INTEGER Frequency, PerformanceCount;
QueryPerformanceFrequency( &Frequency );
QueryPerformanceCounter( &PerformanceCount );
sec = (double)PerformanceCount.QuadPart /(double)Frequency.QuadPart;
return(sec);
使用high_resolution_clock
,我可以使用以下代码(它返回打印“Hello World”所需的时间):
std::chrono::steady_clock::time_point start = std::chrono::steady_clock::now();
std::cout << "Hello World\n";
std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now();
float a = std::chrono::duration_cast<std::chrono::seconds>(end - start).count();
但是我不明白为什么下面这行不起作用(我只是想获取开始时间点):
float a = std::chrono::duration_cast<std::chrono::seconds>(start).count();
感谢您的帮助
【问题讨论】:
【参考方案1】:因为start
不是一个持续时间,它是一个时间点。另请注意,std::chrono::steady_clock
与挂钟无关,因此获取其当前值本身并不能真正告诉您太多,它只是一个稳定计数的计数器。
【讨论】:
+1。有关详细信息,请参阅open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2661.htm。 Joachim Pileborg @Howard-Hinnant 感谢您的回答。但我不明白如何使用 duration 或 time_point 来获取当前执行时间。 @jl.da 执行时间是start
和end
之间的持续时间。如果你想获得这些点的挂钟(即系统时间),你必须使用system_clock
和to_time_t
或类似的。以上是关于获取时间c++的主要内容,如果未能解决你的问题,请参考以下文章