performance scala scala-2.8

performance - ¿La anotación @inline en Scala realmente ayuda al rendimiento?



scala-2.8 (1)

¿O simplemente desordena el código para algo que el JIT se ocupará automáticamente de todos modos?


Todavía tengo que encontrar un caso donde mejore el rendimiento, y lo he intentado en bastantes puntos diferentes. La JVM parece ser bastante buena para delimitar cuando es posible, e incluso si pides @inline en Scala, no siempre puede hacerlo (y a veces me he dado cuenta de que ni siquiera cuando creo que debería hacerlo) ser capaz de).

El lugar donde espera ver una diferencia de bytecode es algo como esto:

object InlineExample { final class C(val i: Int) { @inline def t2 = i*2 @inline def t4 = t2*2 } final class D(val i: Int) { def t2 = i*2 def t4 = t2*2 } }

cuando se compila con -optimise . Y ve la diferencia, pero generalmente no se ejecuta más rápido ya que el compilador JIT puede notar que las mismas optimizaciones se aplican a D

Por lo tanto, puede valer la pena intentarlo en las etapas finales de la optimización, pero no me molestaría en hacerlo rutinariamente sin verificar si hace una diferencia en el rendimiento.