我有兴趣是否应该手动内联一些在性能敏感算法中称为100k-100万次的小方法。首先,我认为,通过不内联,我招致了一些开销,因为JVM将不得不查找是否要内联这个方法(甚至不这样做)。Java - 调用静态方法vs手动内联 - 性能开销
但是,有一天,我用静态方法调用了这个手动内联代码,并看到性能提升。这怎么可能?这是否表明实际上没有开销,并且让JVM以“其意志”内联来实际提升性能?或者这很大程度上取决于平台/架构?
(发生性能提升的例子是用静态方法调用swap(int[] a, int i, int j)
替换了数组交换(int t = a[i]; a[i] = a[j]; a[j] = t;
)。另一个没有性能差异的例子是当我将一个被称为1000000次的10-liner方法)
几乎没有任何现代建筑的速度。 – Puppy 2011-02-11 14:34:03