【问题标题】:C++: std::chrono or boost::chrono [closed]C++:std::chrono 或 boost::chrono [关闭]
【发布时间】:2014-02-04 17:35:17
【问题描述】:


我正在我的代码中进行一些基准测试,并试图确定我应该使用标准版本的 chrono 还是 Boost 提供的原始版本。
我开始使用标准的,因为我想尝试一下,并注意到例如它没有像 Boost 提供的 chrono 那样提供 io 功能。
那么,关于 chrono 和一般情况,我应该使用 Boost 库还是它们的标准库对应物?

【问题讨论】:

    标签: c++ boost stl chrono


    【解决方案1】:

    这取决于你想要达到什么目标。 C++ 计时专家:

    1. 更易理解(了解标准库的用户多于 boost)
    2. 更好的可移植性(如果您决定使用 c++11)
    3. 也许它会工作得更快。
    4. 不要向项目添加其他依赖项。

    Boost chrono 专业人士:

    1. 适用于 c++03
    2. 提供更多功能。

    所以,如果您不需要额外的 io 函数并且不需要 c++03 支持,请使用标准库。

    【讨论】:

    • +1 以获得良好的概述,我自己会使用俗气的“尽可能使用 std::chrono,必要时使用 boost::chrono”
    • (1) std::chrono 中哪个接口部分比boost::chrono 更容易理解? (2) boost::chrono 绝对比std::chrono可移植,因为它适用于更广泛的编译器。 (3) 说std::chrono“工作得更快”不是很清楚你的意思。底线似乎是:额外的依赖性与可移植性和功能性。
    • @IgorR。 (1) 因为你不必阅读 boost 文档来理解它。 (2)如果你已经用过c++11,那肯定有std::chrono,而且这个架构/编译器可能根本就没有boost。 (3) Std 由编译器提供,通常使用该平台可用的最佳实现。 Boost 可能会为一些罕见/不受支持的编译器使用一些通用实现。
    • 取决于您的平台!不幸的是,MSVC 将 high_resolution_clock 类型定义为 system_clock(懒惰的混蛋!)。换句话说,忘记在 Windows 中仅使用 #include <chrono> 来测量低于 1ms 的时间。使用<boost/chrono.hpp> 你可以。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 2017-09-02
    • 2014-03-23
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    相关资源
    最近更新 更多