起初我认为它可以用于性能测量。但是said std::chrono::high_resolution_clock
可能不稳定(is_steady
可能是false
)。还有人说,std::chrono::high_resolution_clock
甚至可能是std::chrono::system_clock
的别名,通常不稳定。所以我无法用这种类型的时钟测量时间间隔,因为在任何时候都可能调整时钟并且测量结果是错误的。
与此同时,我无法将std::chrono::high_resolution_clock
的时间点转换为日历时间,因为它没有to_time_t
方法。所以我无法使用这种类型的时钟获得实时。
那么std::chrono::high_resolution_clock
可以用于什么?
答案 0 :(得分:16)
没有。
抱歉,my bad。
如果您想使用// NOT WORKING EXAMPLE
public class StartGUI extends JFrame {
tabbedPane = new JTabbedPane();
tabbedPane.addTab("Search", new SearchTapController() );
}
// WORKING EXAMPLE
public class StartGUI extends JFrame {
tabbedPane = new JTabbedPane();
tabbedPane.addTab("Search", SearchTapViewImpl() );
}
,请选择high_resolution_clock
。在libc ++和VS steady_clock
上是high_resolution_clock
的类型别名。
在gcc上steady_clock
是high_resolution_clock
的类型别名,我在这个平台上看到过多次使用system_clock
(这是错误的)。
执行使用high_resolution_clock::to_time_t
。但是你应该避免使用<chrono>
的部分内容。
<chrono>
。high_resolution_clock
和.count()
,除非没有其他方法可以完成工作。.time_since_epoch()
,除非代码在没有它的情况下进行编译,并且您希望截断为零行为。答案 1 :(得分:4)
我建议单独使用高分辨率时钟可以谎言。
如果您的算法使用许多测量值,那么任何错误都应该是平均值,并且您应该能够测量非常小的间隔。
我已经使用高分辨率时钟在网络事件中构建时间线,否则我的间隔将全部为0
。 :)
最后,考虑到虽然你的系统时钟可能不稳定,但如果你的高分辨率时钟是替代,这大大简化了你必须玩的一些游戏,以确保时间总是向前流动。
总之,是的,它可能会失败,但是当你拥有它时,它会非常有帮助。很多样品都是你的朋友。 :)