gpt4 book ai didi

c++ - boost::posix_time::microsec_clock CPU 密集吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:25:40 26 4
gpt4 key购买 nike

我想使用 Boost 获取毫秒精度的时间。 (精度不需要毫秒,接近即可。)

引用Local time with milliseconds , 等,说明应该使用微秒时钟:

boost::posix_time::microsec_clock::local_time();

根据我的经验,使用标准的、低影响的系统调用(即 Windows 上的 ::GetTicks())不可能获得精确到微秒的时间(假设具有类似的精度) ).相反,需要发出 CPU 密集型调用以 boost 超过毫秒(进入微秒)的精度。

正如我提到的,我不需要微秒级的精度 - 只需稍微接近毫秒级的精度即可。然而,Boost.Date_Time 不提供任何“millisec_clock”——它提供了一个second_clock,下一个等级是microsec_clock,中间没有“millisec_clock”。

如前所述,如果我使用 microsec_clock 来获取 MILLIseconds,我是否会遇到 CPU 密集型调用?

最佳答案

我使用 boost::date_time 对象创建了一个辅助对象,用于测量在函数内花费的时间,特别是我使用了 microsec_clock::local_time()。

我正在使用这个对象来测量对不同函数的几百万次快速调用(一个压力测试用例),突然我开始注意到我无法解释我的进程的大部分执行时间。经过一些实验后,我删除了大部分这些计数器,我的代码的总执行时间从大约 23 分钟减少到大约 12 分钟(大约 50%!!)

因此,根据我的经验回答您的问题,microsec_clock::local_time() 很昂贵。

看到这个之后,我使用 microsec_clock::universal_time() 而不是 microsec_clock::local_time() 进行了测试,这对我的运行时间来说绝对是一个改进。它仍然增加了大约 3 分钟,但比 10 分钟要好 :P。考虑一下,我想问题是 local_time() 偏移了时间值以说明时区,在我的情况下不需要(因为我只需要时间差异)。我仍然必须进行测试以检查其他方法是否更快(例如 clock_gettime)。

我希望这就是您正在寻找的答案。

关于c++ - boost::posix_time::microsec_clock CPU 密集吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13566763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com