rip*_*234 9 java optimization jvm
我今天得到了一个代码审查备注,将这个匿名类提取到一个字段中,以避免一遍又一遍地分配它:
Collections.transform(new Function<Foo, Bar>(){
Bar apply(Foo foo) {
// do some simple local transform of foo into a Bar.
}
});
Run Code Online (Sandbox Code Playgroud)
我回答说"没关系,JVM优化它".虽然我知道这个"优化"不会以任何方式影响性能,但我认为使代码可以内联访问的附加价值是值得的,我很好奇我是否对JVM优化是正确的.所以,我的问题是 - 它提议的重构绝对是一个无操作,因为JVM无论如何都会优化它,或者这里有一些微小的理论性能增益?
我不会特别期望它能够优化它,不.
它必须确保Collections.transform永远不会隐藏它Function,并且方法本身永远不会this显示等等.显然所有这些都是可行的 - 但在很少的情况下,相对较小的增益可能会做很多工作.
现在任何特定的虚拟机都没有经过仔细检查就很难说 - 但我认为"它不会显着影响性能"比"JVM优化它"更合理.