Bootstrap

<chrono>, clock_gettime(), gettimeofday()对比

  1. 精度(Precision)

    • <chrono>: 提供了纳秒级别的精度,可以满足大多数应用的需求。
    • clock_gettime(): 提供了纳秒级别的精度,与 <chrono> 相当。
    • gettimeofday(): 提供了微秒级别的精度,相对于前两者而言精度稍低一些。
  2. 可移植性(Portability)

    • <chrono>: 是 C++ 标准库的一部分,在所有支持 C++11 及以上版本的编译器和操作系统上都可以使用。
    • clock_gettime(): 是 POSIX 标准的一部分,可以在支持 POSIX 标准的操作系统上使用,如 Linux、BSD 等。
    • gettimeofday(): 也是 POSIX 标准的一部分,因此与 clock_gettime() 类似,可以在支持 POSIX 标准的操作系统上使用。
  3. 开销(Overhead)

    • <chrono>: 实现了基于 C++ 标准库的轻量级计时器,开销较小。
    • clock_gettime(): 是一个系统调用,开销较低,但仍然存在一定的系统开销。
    • gettimeofday(): 也是一个系统调用,与 clock_gettime() 类似,开销相对较低。
  4. 稳定性(Stability)

    • <chrono>: 受系统调度器和硬件性能的影响较小,相对稳定。
    • clock_gettime(): 同样受系统调度器和硬件性能的影响,稳定性较好。
    • gettimeofday(): 由于其精度较低,受到外部因素的影响较大,可能不够稳定。
  5. 易用性(Ease of Use)

    • <chrono>: 是 C++ 标准库的一部分,使用起来比较方便,且代码可读性较高。
    • clock_gettime()gettimeofday(): 需要手动调用相应的系统调用,并且需要处理系统调用可能产生的错误,相对而言使用起来稍显复杂。
;