Ruby Va jamais un coup de pouce de performance alors que JavaScript a vu récemment? Un nouveau VM peut-il le faire vraiment, vraiment em>, rapide? Ou devons-nous assumer que tous les avantages de Ruby ont une pénalité de performance inévitable? P>
Quelles méthodes pourraient être prises pour améliorer ses performances par rapport à d'autres langues plus rapides? P>
8 Réponses :
Je pense que tout le monde peut supposer que c'est un peu plus lent que les autres langues de script p> blockQuote>
Ruby 1.9 devrait réellement être sur la vitesse de CPPHON. P>
Veuillez préciser quelle implémentation de Python dont vous parlez. CPPHON, Jython et IronPython ont des caractéristiques de performance assez différentes et les trois de ces trois sont "python".
Je parlais de la version C de Python2 (je ne sais rien sur la performance de Python3) et la version C de Ruby 1.9.
Eh bien, il y a définitivement beaucoup de place à améliorer. Voici une liste des temps de référence pour une simulation N-Body (un algorithme math-lourd): http://shooooTout.alioth.debian.org/u32q/benchmark.php?test=nbody&lang=all P>
Ruby 1.9 prend 34 minutes tandis que l'une des langues plus rapides du serveur Web (C #) ne prend que de 37 secondes. Donc Pour que Ruby devienne beaucoup plus rapide, il doit vraiment être compilé d'une manière ou d'une autre. Cela peut être dans une mode juste à temps comme le moteur JavaScript V8. Ou cela peut être fait plus comme ASP.NET qui maintient des compilations «mis en cache» dans les coulisses. En d'autres termes, .NET a la capacité de compiler à la volée, mais vous remarquerez donc que cela prend son temps doux. Mais le gain est qu'il n'a pas besoin de ré-compiler jusqu'à ce que le code change et que la référence ci-dessus suggère - le code compilé final est très rapide. Je pense donc que Ruby (ou une variante de celle-ci) serait mieux de copier la technique de la copie de .NET à cet égard. P>
Je considérerais que Scala sera également convivial sur le Web, car il s'exécute sur la JVM, et il est plus rapide que C # (24.26). Java elle-même est également plus rapide que c #. Néanmoins, c'est un point de repère intéressant.
(et note que c # est "seulement" sur mono ici et non sur le Microsoft CLR, que je suppose est un peu plus rapide que mono).
Joachim, merci d'avoir attrapé ça. J'ai réaffiche un peu ma réponse. Je fais toujours la référence à C # parce que c'est ce que je connais plus.
@ Joachim Sauer - voir shootout.alioth.debian.org/demo/ benchmark.php? test = nbody
Jörg W Mittag m'a signalé dans la direction de rubinius quand je a demandé à propos de Trace Arbres Trouver leur chemin vers d'autres langages de script. Vérifiez-les pour un rubis plus rapide. P>
Afrett intéressant, ALLADEN-SWALLER essaie de Accélère Python en utilisant LLVM . P>
choses intéressantes. Il y a beaucoup de tours inexplorées pour accélérer les scripts, mais je me demande si les développeurs de langue considèrent comme une priorité des fonctionnalités et des bibliothèques de langue. P>
MacRuby crée également une machine virtuelle à base de LLVM pour RUBY.
MAGLEV est une implémentation de rubis basée sur un moteur de SmallTalk existant qui cible la portée supérieure de mise à l'échelle et utilisation. p>
Il est conçu pour être "nettement plus rapide" que les implémentations de rubis existantes, vous pouvez regarder une conversation par l'un des Les architectes maglev si vous êtes intéressé. p>
De la même manière que différentes implémentations JavaScript fonctionnent plus rapidement ou plus lentes sur différents navigateurs, il convient de noter que Ruby lui-même fonctionne presque deux fois plus rapide sur Linux vs Windows. P>
Jruby a un compilateur JRubyc pouvant créer des fichiers JVM .Class à partir de fichiers Ruby. Je ne l'ai jamais utilisée, il n'ya jamais de regarder rapidement, alors je ne sais pas combien de rubis est pris en charge pour la compilation de bytecode. S'il est compilé en bytecode, le JVM devrait optimiser, comme tout autre bytecode. P>
L'un des plus avantages ici sera la gestion de la mémoire. Je ne sais pas sur Yarv, mais l'IRM est très mauvais dans cela.
Malheureusement, Jruby est, pour une raison quelconque, un peu plus lentement que Ruby.
@DigitalRoss J'avais entendu dire que Jruby, en utilisant Jruby, pas les liaisons de script, était MUH FAST que Ruby 1.8. Comme indiqué, je n'ai jamais utilisé Jruby ou Cruby pour de vrais projets. Latyjust pour le golf de code.
Ruby 1.9 :: Jruby 1.7 - Shootout.alioth. Debian.org/U32/...
Oui, Ruby deviendra beaucoup plus rapide. P>
Le nouveau VMS JavaScript prouve qu'il est possible pour une langue dynamique et dactylographiée qui apporte des modifications importantes aux chemins d'exécution au moment de l'exécution à compiler efficacement. Le LLVM fournit une fondation plate-forme agnostique sur laquelle cela pourrait arriver. Ces innovations vont éventuellement ruisseler dans toutes les langues de script. P>
macruby , MAGLEV ou Rubinius pourrait être d'abord à commercialiser avec ce type de vitesse, mais La mise en œuvre C sera probablement là aussi. p>
Jruby, il convient de noter que obsédé avec la vitesse et a plusieurs "rubis-like" prototype langues qui permettent aux développeurs de échanger certaines fonctionnalités pour améliorer les performances. P>
Honnêtement, la principale chose qui détient Ruby Back est celle de nombreux objectifs, il est déjà assez rapide. Si vous souhaitez résoudre un N -FORMER Problème A>, vous devriez probablement regarder ailleurs. Mais si vous souhaitez construire une application Web lisse et maintenable, Ruby vous mènera à la production plus rapidement et avec une grande maintenabilité. Et votre VCS sera tellement impressionné, ils vous donneront assez d'argent à l'échelle. A quel moment, vous pouvez réécrire vos points de starte comme inline C ou Java. P>
Ruby a acquis une réputation de ne pas bien se croirser. Avec Twitter allant à Scala, Ruby peut ne pas être le moyen d'obtenir VC captial.
Twitter a frappé le point où Ruby n'est plus le meilleur choix pour toutes ses fonctions. Rien de balance comme C et Java, mais ces langues sont très lentes à construire. Pour de nombreux sites Web qui ne figureront pas sur le programme Oprah Winfrey et CNN, Ruby offre une bonne combinaison de développement rapide et de performance.
Pendant que Jruby est souvent obtenue dans des points de repère simples, avec des optimisations optionnelles allumées, il commence à bien paraître. P>
Et l'interpréteur officiel de Ruby est maintenant YARV, bien que la plupart des gens ne l'ont pas encore vécu, car ils sont toujours sur 1,8. P>
Oui, Ruby peut devenir plus rapide - du moins au point où il n'est plus un problème. P>
Ce ne sera plus un problème quand il sera aussi rapide que tout autre langage comparable. Et même alors, seulement si elle est aussi rapide sur des caractéristiques comparables. p>
pourquoi? S'il est plus lent que tout ce qui est comparable, il y a un moyen de le faire plus vite, il est donc possible. Et avec l'élan Ruby a, il va probablement devenir plus rapide. P>
Subjectif et arturmateur, sans oublier que je vois que les membres de la communauté de rubis attrapent des fourches et des flambeaux. Je vous souhaite bonne chance, monsieur.
WOW, comment est cette "offensive flagrante"?
Techniquement, il n'y a aucune raison pour que cela ne devrait pas tirer profit du même type d'optimisations de VM que JavaScript, Java et .Net obtiennent.
Ruby est open source. Si vous voulez que ce soit plus rapide, vous pouvez commencer à apprendre comment cela fonctionne sous la hotte, confortable à la communauté de développement, apprenez les mœurs et les traditions de proposition de modifications dans ce groupe et de commencer aidant i> le rendre plus rapide.
"Je pense que tout le monde peut supposer en toute sécurité qu'il est un peu plus lent que d'autres langues de script" - Comment pouvons-nous supposer en toute sécurité cela ??
Peut être ruby n'est pas aussi rapide .. Mais les programmes rubis peuvent être fabriqués plus rapidement - Hxa.name/articles/Content/Ruby-Speed-Guide_HXA7241_2007.html
Je suis tout à fait sûr que les "avantages" de Ruby Do pas i> ne nécessitent que d'être plus lents que d'autres langues, comme par exemple le commun LISP, qui a tout à fait une caractéristique de langue, on pourrait actuellement blâmer la mauvaise performance, a une implémentation bien performante. C'est juste une question de priorités et comme d'autres l'ont souligné, certaines personnes travaillent sur la partie de la performance.
Je ne pense pas que cela soit argumentatif; C'est une question importante pour tout développeur de rubis ou tout développeur qui envisage d'apprendre Ruby. Il appartient aux commentateurs de garder la conversation civile.
@dmckee c'est un tel fluide. Un projet est open-source de manière à pouvoir bénéficier de la bonne volonté des contributeurs, pas de manière à ce que le Core Devs ait une excuse à tout moment une suggestion ou une question valide.
@LUCAS OMAN: Demander ici si Ruby pourrait, un jour, une super duper rapide n'est pas une suggestion valide au projet. C'est vapeur. Et hors tension de la vapeur à cela, car il n'a pas de réponse réelle sauf "attendre et voir."
Tellers de la fortune sur les choses sont notoirement peu fiables. Cependant, la magie infaillible 8-Ball SEZ: "Outlook pas si bien"!