Ou cela encombre-t-il simplement le code pour quelque chose que l'EJI prendrait automatiquement en charge de toute façon.
Réponse
Trop de publicités?Je n'ai pas encore trouvé un cas où il améliore les performances, et j'ai essayé dans un certain nombre de différents endroits. La JVM semble être tout à fait bon à l'in-lining, lorsque c'est possible, et même si vous demandez @inline dans Scala, on ne peut pas toujours le faire (et parfois, j'ai remarqué qu'il n'a même pas quand je pense qu'il devrait être capable de).
L'endroit où vous vous attendez à voir un bytecode différence est dans quelque chose comme ceci:
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
}
}
lorsqu'il est compilé avec -optimise
. Et que vous ne voyez pas la différence, mais il généralement ne pas exécuter n'importe quel plus rapidement puisque le compilateur JIT peut remarquer que les mêmes optimisations s'appliquent D
.
Ainsi, il peut être vaut la peine d'essayer dans la phase finale de l'optimisation, mais je ne serais pas la peine de faire régulièrement sans vérifier pour voir si cela fait une différence dans la performance.