我已经阅读了一些关于使用 Java 记录调试消息的各种方法,并且来自 C 背景,我的担忧如下:
在禁用日志记录的情况下(例如生产环境),这些库声称开销最小,但由于log()
仍在评估其功能的参数,我担心的是实际场景中的开销实际上根本不能忽略不计。
例如, alog(myobject.toString(), "info message")
仍然有评估的开销myobject.toString()
,这可能非常大,即使 log 函数本身什么也不做。
有没有人有这个问题的解决方案?
PS:对于那些想知道我为什么提到 C 背景的人:C 允许您使用预处理器宏和编译时指令,这些指令将在编译时完全删除与调试相关的所有代码,包括宏参数(根本不会出现)。
编辑:在阅读了第一批答案之后,似乎 java 显然没有任何可以解决问题的方法(想想在 CPU 的每一点都很重要的移动环境中将数字的余弦记录在一个大循环中)。所以我要补充一点,我什至会选择基于 IDE 的解决方案。我最后的手段是构建类似“查找全部/替换”宏的东西。我首先想到也许从面向方面的框架中获取的东西会有所帮助......任何人?