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

C++ 使用#define跟踪日志记录以避免性能问题,c++,performance,C++,Performance,我必须跟踪日志,这是我的应用程序中非常关键的性能部分。它必须在生产中可配置 我想出了这个主意,但这似乎是个坏主意 #define TRACE(X) if(log->trace) {log->traceLog(X);} log->trace是一个bool,因此它在分支预测中应该相当便宜,它将被使用如下: TRACE("Input channel: " + std::to_string(ChannelNumber) + " [r] " + std::to_strin

我必须跟踪日志,这是我的应用程序中非常关键的性能部分。它必须在生产中可配置

我想出了这个主意,但这似乎是个坏主意

#define TRACE(X) if(log->trace) {log->traceLog(X);}
log->trace
是一个bool,因此它在分支预测中应该相当便宜,它将被使用如下:

TRACE("Input channel: " + std::to_string(ChannelNumber) + " [r] " +
          std::to_string(ChannelValue->LongReal))
创建一个字符串并将各种内容转换为日志是非常昂贵的,如果禁用了跟踪日志级别,则需要一个日志方法调用来检查内部


有更好的方法吗?我是否完全以错误的方式处理跟踪日志记录

它在生产中运行良好


而且define很容易查找,因此在阅读代码时不会有太多混淆。

在我看来很好。如果
log->trace
为false,则会忽略昂贵的部件。无需在内部设置
traceLog()
检查
trace