使用 #define 进行跟踪日志记录以避免性能问题



我必须跟踪记录我的应用程序的一个非常关键的性能部分。它必须在生产中可配置。

我想出了这个东西,但有些事情似乎是一个坏主意。

#define TRACE(X) if(log->trace) {log->traceLog(X);}

log->trace是一个布尔值,所以它在分支预测中应该相当便宜,它将用于这样的东西:

TRACE("Input channel: " + std::to_string(ChannelNumber) + " [r] " +
std::to_string(ChannelValue->LongReal))

创建一个字符串并将各种内容转换为日志是昂贵的,并且日志方法调用将检查内部是否禁用跟踪日志级别就可以做到这一点。

有没有更好的方法可以做到这一点?我是否以完全错误的方式接近跟踪日志记录?

它在生产中工作正常。

并且定义很容易查找,因此在阅读代码时不会有太多混乱。

最新更新