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

时间:2018-06-22 00:28:54

标签: c++ performance

我必须跟踪日志,这是我的应用程序中非常重要的性能部分。而且必须在生产中进行配置。

我想出了这个东西,但是关于它的一些想法似乎是个坏主意。

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

log->trace是一个布尔值,因此在分支预测中应该是相当便宜的,它将被使用如下:

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

创建一个字符串并将各种内容转换为日志非常昂贵,而一个log方法调用(会检查是否禁用了跟踪日志级别)会做到这一点。

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

1 个答案:

答案 0 :(得分:0)

在生产中效果很好。

而且定义易于查找,因此在阅读代码时不会造成太多混乱。