我感兴趣的是我是否应该手动内联在一些性能敏感算法中称为100k-100万次的小方法.
首先,我认为,由于没有内联,我会产生一些开销,因为JVM必须找到是否要内联这个方法(甚至不能这样做).
然而,前几天,我用静态方法的调用替换了这个手动内联代码,并看到了性能提升.怎么可能?这是否表明实际上没有开销,让JVM内联"意志"实际上提升了性能?或者这在很大程度上取决于平台/架构?
(发生性能提升的例子是用int t = a[i]; a[i] = a[j]; a[j] = t;静态方法调用替换数组交换()swap(int[] a, int i, int j).另一个没有性能差异的例子是当我内联一个10-liner方法时,称为1000000次.)