java - Java 优化器会删除空方法调用的参数构造吗?

标签 java optimization log4j

假设我有这样的代码:

log.info("Now the amount" + amount + " seems a bit high")

我会用一个虚拟实现替换 log 方法,例如:

class Logger {
   ...
   public void info() {}

}

如果没有检测到副作用,优化器是否会内联它,并且死代码删除是否会删除参数构造?

最佳答案

我猜编译器(javac)不会,但即时编译器很可能会。

然而,为了让它工作,它必须能够推断出您用来生成参数的任何指令都没有副作用。对于字符串的特殊情况,它应该能够做到这一点,但对于其他方法可能无法做到这一点。

可以肯定的是,做一个小的基准测试,将其与 Jesper 建议和查看的代码进行比较,以更快者或它们是否同样快为准。

另请参阅此处:http://www.ibm.com/developerworks/java/library/j-jtp12214/index.html#3.0

关于java - Java 优化器会删除空方法调用的参数构造吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3092004/

相关文章:

java - 带有 Javassist 3.18.2-GA 的 Powermock 1.6.3 产生 NoSuchMethodError

java - 本地运行的 hibernate 与服务器上运行的 hibernate 之间的同步

Proximal交替线性化最小化算法的python实现

optimization - Julia 中最小二乘坐标下降算法不收敛

java - 无法为 log4j 控制台附加程序配置时区

java - 在 codeFights 任务中填充 HashSet

java - JHipster:使用附加信息注册用户[帮助]

c - 从 128 位 __m128 Intel Intrinsic 中求和 4 个整数

java - Log4j2 - 如何配置 JDBC Appender?

Cassandra 4.0 log4j 漏洞缓解措施