c++ - 在 C++11 中获取当前时间的最快方法是什么?

标签 c++ performance c++11 time

上下文: 我正在编写一个高性能 C++11 应用程序,其中一部分是删除不活动的连接。为此,我在我的连接对象中存储了一个“上次事件”时间戳,我会在执行操作时更新它。然后我有一个每隔几秒运行一次的计时器,循环遍历所有 session ,并删除不活动的 session 。

目前我正在使用这段代码来获取当前时间戳:

timestamp = duration_cast<milliseconds>(system_clock::now().time_since_epoch()).count()

我想知道是否有更快的方法来做到这一点?我所说的更快是指获取时间戳本身的性能,而不是时间戳的分辨率。

分辨率对于我的特定应用来说并不是很重要,它可以低至一秒。此外,utc/local 无关紧要,我只是使用时间戳将其与通过相同方法获取的其他时间戳进行比较。

我希望保持跨平台,但也欢迎使用条件编译进行特定于平台的优化。

最佳答案

如果性能确实是一个问题,而准确性不是,那么您可能根本不需要使用时间戳。而只是为每个连接保留一个计数器,每当连接发生事件时,将计数器重置为零。每当您的计时器关闭时,让它为每个连接增加计数器,并断开任何计数器值超过 (N) 的连接(对于您认为最有效的 N 值)

关于c++ - 在 C++11 中获取当前时间的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46771839/

相关文章:

c++ - 如何遍历打包的可变参数模板参数列表?

c++ - 如何在 Vista/Server 2008 上使用 std::shared_mutex?

c# - 将图像效果(灰度)应用到屏幕(PC监视器)

c++ - 如何查询系统功能/属性?

visual-studio - 配置负载测试的每秒请求数

mysql - 在聚合查询中获取非聚合数据

c++ - 为什么 boost::signals2::signal<T>::connect 需要复制构造函数?

c++ - Visual C++ 2013 可以做 Purify 和 Quantify 所做的事情吗?

java - 检查语句或赋值变量的性能?

C++11 constexpr 函数的参数传入模板参数