#ifndef INIT_TIMER
#define INIT_TIMER(name) \
std::chrono::high_resolution_clock::time_point timerStart##name = std::chrono::high_resolution_clock::now();
#endif // !INIT_TIMER
#ifndef STOP_TIMER
#define STOP_TIMER(name, title) \
float timerDuration##name = std::chrono::duration_cast(std::chrono::high_resolution_clock::now() - timerStart##name).count(); \
LOG_S(INFO) << "RUNTIME of " << title << ": " \
<< timerDuration##name \
<< " ms " << std::endl;
#endif // !STOP_TIMER
这段代码定义了两个用于 计时(测量代码运行时间) 的宏(INIT_TIMER
和 STOP_TIMER
),通常用于性能分析或调试阶段,方便快速测量某段代码的执行耗时。
INIT_TIMER(name)
#define INIT_TIMER(name) \
std::chrono::high_resolution_clock::time_point timerStart##name = std::chrono::high_resolution_clock::now();
宏功能:记录当前时间为“起始时间”
timerStart##name
:宏拼接,比如 INIT_TIMER(foo)
→ 定义 timerStartfoo
使用了 std::chrono::high_resolution_clock::now()
:高精度时间戳
STOP_TIMER(name, title)
#define STOP_TIMER(name, title) \
float timerDuration##name = std::chrono::duration_cast(std::chrono::high_resolution_clock::now() - timerStart##name).count(); \
LOG_S(INFO) << "RUNTIME of " << title << ": " \
<< timerDuration##name \
<< " ms " << std::endl;
宏功能:记录当前时间,计算和 INIT_TIMER
之间的时间差(单位:毫秒)
打印格式化的日志信息,含耗时
LOG_S(INFO)
:使用了 glog
或 spdlog
等日志库的宏方式打印日志
INIT_TIMER(foo);
// 你的代码
heavyComputation();
STOP_TIMER(foo, "heavyComputation");
RUNTIME of heavyComputation: 153 ms
场景 | 说明 |
---|---|
性能调试 | 快速找出耗时较高的函数或代码块 |
多线程执行耗时分析 | 不影响主流程逻辑的计时 |
测试不同算法效率 | 比较多个函数的执行时间 |
非侵入式,快速插入/移除
使用宏 + 高精度时间,方便而高效
日志输出清晰明确