跳转至

ev-spdlog-chrono-stopwatch-001

字段 值
项目 gabime/spdlog
固定 commit 79524ddd08a4
路径 include/spdlog/stopwatch.h
行段 L30-L44
特性 std::chrono
许可证 MIT
代码来源 项目源码
级别 manual
审核 zyuhao7 @ 2026-11-03
测试代码 否
发现方式 manual

用法

用 steady_clock 和 duration 实现秒级、毫秒级计时器

为什么典型

计时需要单调时钟,steady_clock 不受系统时间调整影响;elapsed 返回 duration,elapsed_ms 用 duration_cast 显式换算单位。

摘录

class stopwatch {
    using clock = std::chrono::steady_clock;
    std::chrono::time_point<clock> start_tp_;

public:
    stopwatch()
        : start_tp_{clock::now()} {}

    std::chrono::duration<double> elapsed() const {
        return std::chrono::duration<double>(clock::now() - start_tp_);
    }

    std::chrono::milliseconds elapsed_ms() const {
        return std::chrono::duration_cast<std::chrono::milliseconds>(clock::now() - start_tp_);
    }

备注

生产头文件;两个接口分别展示 duration 的隐式单位转换和 duration_cast 的显式截断,是 chrono 单位模型的最小完整示例。

查看固定 commit 源码 · 返回证据索引