33 votes

Avantages du bytecode émetteur Scala pour JVM 1.7

Selon Scala 2.10, quels sont les avantages (le cas échéant) de l’émission de bytecode pour la JVM 1.7, par rapport au défaut d’émission pour la 1.6?

35voto

rxg Points 1871

Précédent Scala versions émis version 49.0 de l'octet de code, ce qui correspondait à Java 5. Avec Scala 2.10 version par défaut a été changé pour la version 50.0, correspondant à la version 6 de Java et qui a l'avantage principal de l'activation la plus rapide vérificateur introduit avec cette version, il devrait donc conduire à (un peu) meilleur moment de l'exécution de la performance.

Comme vous le notez, avec 2.10 il est devenu possible d'émettre de la version de 51,0 du byte-code qui correspond à Java 7. Il y a quelques différences entre la version 50.0 et la version de 51,0: le plus grand est l'inclusion de l' invokedynamic enseignement, avec la plomberie qui va avec (voir le fichier de la classe de définition de format pour les détails techniques).

Aussi loin que l'utilisation de la Scala de la 51.0 de byte code va, même si les pièces techniques sont en place, il est ma compréhension que le travail est encore à un stade expérimental à l'aide de cette fonction. Voir cette présentation de l'EPFL et de ce fil, ce qui montre que l'équipe est de travailler sur l'obtention de la performance avantages de la méthode des poignées, sans avoir à introduire une dépendance sur Java 7.

Scala 2.11 maintenu le défaut d'émettre de la version de 50,0 du bytecode, mais le plan officiel est maintenant pour accéder directement à Java 8 bytecode avec Scala 2.12. Dans l'intervalle, il y a un nouveau back-end disponible pour Scala 2.11 qui va vous permettre de tester certaines des fonctionnalités qui sont prototypée pour Scala 2.12, et qui deviendra le défaut de back-end avec Scala 2.12.

De toute façon, le tant attendu avantages proposés proviennent tous de l'aide de l' invokedynamic bytecode (et sa MethodHandle structures). Ils comprennent:

(Spoiler: à l'Aide d' MethodHandles pour mettre en œuvre les bouchons dans le expérimentales backend est actuellement plus lent que le présent optimisé fermeture de la création!)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X