Java logger允许以下语法:
m_logger.info("ID: {} NAME: {}", id, name); // 1
m_logger.info("ID: " + id + " NAME: " + name); // 2
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,基本上我们调用...函数,因此Object[]每次都会创建一个new .
我跑过YourKit,这就是我所看到的.
我的问题是,第一种情况不是我们应该一直避免的昂贵操作吗?但是我已经在很多代码中看到了这一点.使用#1我们获得了什么?
我想我们应该使用StringBuilder最佳性能?
m_logger.info("ID: {} NAME: {}", id, name);
Run Code Online (Sandbox Code Playgroud)
这是懒惰的论据评估.如果INFO关闭日志记录级别,则不会处理该字符串.其实,这不是什么大不了的构建new Object[n],n通常(=常)是< 5.
m_logger.info("ID: " + id + " NAME: " + name);
Run Code Online (Sandbox Code Playgroud)
每次都会构造此字符串.
我的问题是,第一种情况不是我们应该一直避免的昂贵操作吗?
不,特别是在程序执行的宏伟计划中
使用 #1 我们能得到什么?f
可读性,有时第一种方法更容易作为代码阅读。生成的日志行是相同的
我想我们应该使用 StringBuilder 以获得最佳性能?
否: https: //stackoverflow.com/a/1532499/32090
| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |