Estoy interesado si debo en línea manualmente pequeños métodos que se llaman 100k - 1 millón de veces en algún algoritmo sensible al rendimiento.Java - llamar a métodos estáticos vs manual en línea - sobrecarga de rendimiento
En primer lugar, pensé que, al no incluir, incurriría en una sobrecarga ya que JVM deberá determinar si desea alinear o no este método (o incluso si no lo hace).
Sin embargo, el otro día reemplacé este código en línea manualmente con la invocación de métodos estáticos y observé un aumento en el rendimiento. ¿Cómo es eso posible? ¿Sugiere esto que en realidad no hay gastos generales y que al permitir que JVM se alinee con "su voluntad" en realidad aumenta el rendimiento? ¿O esto depende enormemente de la plataforma/arquitectura?
(El ejemplo en el que se produjo un aumento de rendimiento fue la sustitución de matriz de intercambio (int t = a[i]; a[i] = a[j]; a[j] = t;
) con una llamada de método estático swap(int[] a, int i, int j)
. Otro ejemplo en el que no había ninguna diferencia de rendimiento fue cuando inlined un método 10-liner que se llamó 1000000 veces .)
No es más rápido en casi cualquier arquitectura moderna. – Puppy
Lo intenté hace un par de años y fue más lento .... – mikera
@DeadMG Como dije, vale la pena intentarlo. Nada mas. – biziclop