我使用log4cxx进行日志记录。但是,日志记录可能会引入一些我需要最小化的性能开销。
如何关闭日志记录(在运行时或编译时)以最小化开销 - 没有从代码中删除所有日志语句?
该文件指出
用户应注意以下性能问题。
关闭日志记录时的日志记录性能。
当日志完全关闭或仅关闭一组级别时,日志请求的成本包括方法调用和整数比较。如果请求未启用,LOG4CXX_DEBUG 和类似的宏会抑制不必要的表达式评估。
但是如何完全关闭它呢?这是可以实现的最小开销吗?
我使用log4cxx进行日志记录。但是,日志记录可能会引入一些我需要最小化的性能开销。
如何关闭日志记录(在运行时或编译时)以最小化开销 - 没有从代码中删除所有日志语句?
该文件指出
用户应注意以下性能问题。
关闭日志记录时的日志记录性能。
当日志完全关闭或仅关闭一组级别时,日志请求的成本包括方法调用和整数比较。如果请求未启用,LOG4CXX_DEBUG 和类似的宏会抑制不必要的表达式评估。
但是如何完全关闭它呢?这是可以实现的最小开销吗?
如果您真的想在编译时禁用所有日志记录,只需将 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)
零开销。对于运行时的情况,你总是要付出一些代价。快速浏览一下,我实际上使开销比他们的文档所说的要大一些,通常涉及一个额外的虚拟方法调用。这基本上是使用此库的最小开销,尽管您可能会使用链接时间优化等获得一些非常小的改进,以消除方法调用开销。