我正在尝试将 Windows c++ 函数转换为可移植函数。该函数的目标是获得以秒为单位的参考 CPU 时间。Windows 功能使用QueryPerformanceCounter
and 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();
谢谢您的帮助