/ / Raisons de ne pas compiler - jruby, compilé

Raisons de ne pas compiler - jruby, compilé

Ayant reçu un projet Ruby, j'ai été sceptique quant à la décision d'utiliser Ruby en raison de ses performances.

J'étais excité de découvrir JRuby avec son intégration Java. Cela a considérablement simplifié le projet pour moi. Et maintenant, je viens d’être totalement chatouillé de découvrir que JRuby peut être compilé en bytecode Java .

Avec des chiffres de référence comme ceux-ci:

fib (30) rubis: 1.67s

fib (30) JRuby interp (VM ​​cliente): 3.93s

fib (30) JRuby interp (serveur virtuel): 2,28s à 2,08s

fib (30) JRuby compilé (VM client): 1,89 à 1,79

fib (30) JRuby compilé (VM du serveur): 1.66s à 0.86s

Je suis maintenant très enthousiasmé par notre choix de JRuby ici. Existe-t-il des inconvénients ou des raisons pour lesquelles vous ne compileriez pas pour la version de production?

Réponses:

1 pour la réponse № 1

La distribution et les installations feraientcette décision est plus facile pour moi: en tant qu’administrateur système, je préférerais beaucoup distribuer un fichier .JAR pouvant s’exécuter sur plusieurs JRE plutôt que de devoir distribuer une instance de travail de JRuby (différente pour différents systèmes d’exploitation, par exemple) et mon code source. De plus, vous avez déjà démontré que le code compilé en AOT est plus rapide que le code interprété / JIT, raison pour laquelle il vaut mieux distribuer la version compilée.


0 pour la réponse № 2

Ruby est très rapide à développer (si vous êtes familier avec son style).

Ce n'est pas si rapide de courir, mais ce n'est généralement pas un gros inconvénient. Il est assez rapide pour la plupart des charges de travail, même les grands sites Web.

La décision ne devrait pas être basée sur la vitesse d'exécution - à moins que vous n'ayez des statistiques pour dire que les gens ne sont pas censés être satisfaits des performances - mais plutôt sur la facilité de déploiement.

Si le déploiement des applications Ruby a été réalisé par vos prédécesseurs, conservez-le Ruby.

Si le déploiement sur JVM est plus facile, optez pour cela.