【问题标题】:Turn off logging with log4cxx for minimum overhead使用 log4cxx 关闭日志记录以获得最小开销
【发布时间】:2013-02-08 09:55:15
【问题描述】:

我使用log4cxx 进行日志记录。但是,日志记录可能会引入一些性能开销,我需要尽量减少这些开销。

如何关闭日志记录(在运行时或编译时)以最小化开销 - 没有从代码中删除所有日志语句?

文档指出

用户应注意以下性能问题。

关闭日志记录时的日志记录性能。

当完全关闭日志记录或仅关闭一组级别时,日志请求的成本包括一个方法调用加上一个 整数比较。 LOG4CXX_DEBUG 和类似的宏抑制 如果请求未启用,则不必要的表达式评估。

但是如何完全关闭它呢?这是可以实现的最小开销吗?

【问题讨论】:

    标签: c++ performance logging log4cxx


    【解决方案1】:

    如果您真的想在编译时禁用所有日志记录,只需将 log4cxx 宏重新定义为空即可,即

    #define LOG4CXX_TRACE(logger, expression)    
    #define LOG4CXX_DEBUG(logger, expression)    
    #define LOG4CXX_INFO(logger, expression)   
    #define LOG4CXX_WARN(logger, expression)    
    #define LOG4CXX_ERROR(logger, expression)    
    #define LOG4CXX_FATAL(logger, expression) 
    

    零开销。对于运行时的情况,你总是要付出一些代价。快速浏览一下,我实际上使开销略大于他们的文档所说的,通常涉及额外的虚拟方法调用。这基本上是使用此库的最小开销,尽管您可能会使用链接时间优化等获得一些非常小的改进,以消除方法调用开销。

    【讨论】:

      猜你喜欢
      • 2011-08-25
      • 1970-01-01
      • 2011-08-13
      • 1970-01-01
      • 2014-10-27
      • 2012-10-23
      • 2010-11-29
      • 1970-01-01
      • 2010-10-08
      相关资源
      最近更新 更多