¿O simplemente desordena el código para algo que el JIT se encargaría automáticamente de todos modos?¿La anotación @inline en Scala realmente ayuda al rendimiento?
Respuesta
Todavía tengo que encontrar un caso en que mejore el rendimiento, y lo he intentado en bastantes lugares 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 se espera ver una diferencia en el código de bytes 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 al D
.
Así que 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.
- 1. ¿Cuándo debería (y no debería) usar la anotación @inline de Scala?
- 2. ¿Cómo un compilador JIT ayuda al rendimiento de las aplicaciones?
- 3. Scala "coincidencia" ayuda
- 4. 'inline' en JavaScript?
- 5. ¿Cuándo se necesita realmente 'Rendimiento'?
- 6. scala - sintaxis de rendimiento
- 7. espectáculo jQuery/ocultar al utilizar inline-block
- 8. Delphi 2010 inline inútil?
- 9. ¿La sugerencia de tipo ayuda al rendimiento de los scripts PHP?
- 10. CSS display: inline vs inline-block
- 11. Devolución e iteración de la colección con rendimiento en scala
- 12. ayuda en la conversión: __asm__ __volatile__
- 13. Inline struct declaration
- 14. Método Inline throw() en C++
- 15. Android, ayuda girando la imagen al tacto
- 16. rendimiento de ejecución (retorno de rendimiento) usando Scala continuaciones
- 17. ¿El triple buffer es realmente un impulso de rendimiento gratuito?
- 18. ¿Por qué a las personas scala no les gusta la anotación?
- 19. En SQLite, ¿las declaraciones preparadas realmente mejoran el rendimiento?
- 20. Crear listas y conjuntos en Scala: ¿Qué obtengo realmente?
- 21. Inline Definiciones
- 22. Inline Argumentos función de propagación
- 23. Inyectando valor externalizado en la anotación Spring
- 24. erlang vs jvm (scala) rendimiento de recursión
- 25. ¿Cómo afecta la llamada al método el rendimiento en Java?
- 26. Alto rendimiento Concurrent MultiMap Java/Scala
- 27. Scala Rendimiento: estilo imperativo vs funcional
- 28. ¿Const ayuda al optimizador? C++
- 29. ¿Qué es el rendimiento de Scala?
- 30. Inline Si en Razor Ver
Gracias por informar los resultados de su prueba; Me salvó a mí y probablemente a otros en algún momento :) –
Tu argumento solo es cierto si solo había un compilador JIT en el planeta. - Pero esto no es cierto. Existe Android, existe IBM que produce sus propias JVM. Entonces, cualquier cosa que haga el compilador de Scala * con seguridad * es mejor que algo que JIT * pueda * hacer. – Martin
@Martin - Admito que no he probado Android. He probado JRockit y IBM JVM con el mismo efecto que Sun JVM (es decir, ninguno). –