我必须跟踪日志,这是我的应用程序中非常重要的性能部分。而且必须在生产中进行配置。
我想出了这个东西,但是关于它的一些想法似乎是个坏主意。
#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方法调用(会检查是否禁用了跟踪日志级别)会做到这一点。
有更好的方法吗?我是否完全以错误的方式处理跟踪日志记录?
答案 0 :(得分:0)
在生产中效果很好。
而且定义易于查找,因此在阅读代码时不会造成太多混乱。