首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取时间c++

获取时间c++
EN

Stack Overflow用户
提问于 2013-11-04 11:59:04
回答 1查看 219关注 0票数 1

我正在尝试将一个Windows c++函数转换为一个可移植的函数。该函数的目的是获得以秒为单位的参考cpu时间。Windows函数使用的是QueryPerformanceCounterQueryPerformanceFrequency,这对mac来说是不可移植的,所以我尝试使用std::chrono::high_resolution_clock,但是我不明白它是如何工作的。

我已经具备的功能如下:

代码语言:javascript
复制
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“所需的时间):

代码语言:javascript
复制
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();

但是,我不明白为什么下面这一行不能工作(我只想获得起始时间点):

代码语言:javascript
复制
float a = std::chrono::duration_cast<std::chrono::seconds>(start).count();    

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-04 12:02:49

因为start不是持续时间,而是时间点。另外,请注意,std::chrono::steady_clock与挂钟无关,因此获取其当前值本身并不能真正告诉您多少,它只是一个稳定计数的计数器。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19767270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档