184 votes

Pourquoi les gens disent que Ruby est lent ?

J'aime Ruby on Rails et je l'utilise pour tous mes projets de développement web. Il y A quelques années il y avait beaucoup de discussions sur les Rails d'être un dévoreur de mémoire et sur la façon dont il n'était pas très bien, mais ces suggestions ont été mis au lit par Gregg Pollack ici.

Bon, mais dernièrement, j'ai entendu des gens dire que Ruby lui-même est lent.

  • Pourquoi est-Ruby considérée comme lente?

Je ne trouve pas Ruby à être lent, mais là encore, je suis juste de l'utiliser pour faire simple CRUD applications et des blogs. Quel genre de projets que je dois faire avant que je trouve Ruby devient lent? Ou est-ce la lenteur juste quelque chose qui affecte tous les langages de programmation?

  • Quelles sont vos options en tant que programmeur Ruby si vous voulez traiter avec cette "lenteur"?

  • La version de Ruby le mieux adapté à une application comme un Débordement de Pile là où la vitesse est critique, et le trafic est intense?

Les questions sont subjectives, et je me rends compte de l'architecture de l'installation (EC2 vs serveurs autonomes, etc) qui fait une grosse différence, mais j'aimerais entendre ce que les gens pensent à propos de Ruby être lent.

Enfin, je ne trouve pas beaucoup de news sur Ruby 2.0 - je prendre, nous sommes un bon nombre d'années loin de qui alors?

184voto

Jay Godse Points 5157

Pourquoi est-Ruby considérée comme lente?

Parce que si vous exécutez typique des critères de comparaison entre Ruby et d'autres langues, Ruby perd.

Je ne trouve pas Ruby à être lent, mais ensuite encore une fois, je suis juste de l'utiliser pour faire simple CRUD applications et des blogs. Ce genre de projets, j'ai besoin d' faire avant que je trouve Ruby devenir lent? Ou est-ce la lenteur juste quelque chose qui affecte l'ensemble de la programmation langues?

Ruby ne serait probablement pas bien vous servir dans la rédaction d'un signal numérique en temps réel le traitement de l'application, ou tout autre type de contrôle en temps réel du système. Ruby (avec aujourd'hui VMs) serait probablement d'étranglement sur les ressources limitées de l'ordinateur, tels que les smartphones.

Rappelez-vous que beaucoup de la transformation sur vos applications web est effectuée par un logiciel développé en C. par exemple, Apache, Mince, Nginx, SQLite, MySQL, PostgreSQL, de nombreuses bibliothèques d'analyse, RMagick, TCP/IP, etc sont des programmes utilisés par Ruby. Ruby fournit la colle et la logique métier.

Quelles sont vos options en tant que Ruby programmeur si vous voulez traiter avec cette "lenteur"?

Commutateur rapide de la langue. Mais ce qui a un coût. C'est un coût qui peut être vaut la peine. Mais pour la plupart des applications web, choix de la langue n'est pas un facteur pertinent, car il n'est tout simplement pas suffisamment de trafic justifier l'utilisation d'un plus rapide de la langue qui coûte beaucoup plus pour développer pour les.

La version de Ruby le mieux adapté à une application comme un Débordement de Pile là où la vitesse est critique, et le trafic est intense?

D'autres personnes ont répondu à cette - JRuby, IronRuby, REE fera le Rubis le cadre de l'exécution de votre application plus rapide sur les plates-formes que peuvent se permettre les VMs. Et puisqu'il n'est souvent pas Ruby qui provoque la lenteur, mais votre système informatique de l'architecture et de l'architecture de l'application, vous pouvez faire des choses comme la réplication de base de données, de multiples serveurs d'applications, l'équilibrage de la charge avec les proxys inverses, la mise en cache HTTP, memcache, Ajax, mise en cache côté client, etc. Aucun de ces trucs est Ruby.

Enfin, je ne trouve pas beaucoup de nouvelles sur Ruby 2.0 - je prendre, nous sommes un bon nombre d' ans de qui alors?

La plupart des gens sont en attente pour Ruby 1.9.1. Moi, je suis en attente pour les Rails 3.1 sur Ruby 1.9.1 sur JRuby.

Enfin, n'oubliez pas que beaucoup de développeurs choisissent Ruby, car il rend la programmation plus joyeuse de l'expérience par rapport à d'autres langues, et parce que Ruby Rails permet qualifiés aux développeurs de développer des applications très rapidement.

121voto

vladr Points 34562

Tout d'abord, plus lent par rapport à ce que? C? Python? Nous allons obtenir quelques chiffres à l' Ordinateur Language Benchmarks Jeu:

Pourquoi est-Ruby considérée comme lente?

Dépend de qui vous demandez. Vous pourriez être dit que:

  • Ruby est un langage interprété et langages interprétés aura tendance à être plus lent que ceux compilés
  • Ruby utilise la collecte des ordures (si C#, qui utilise également la collecte des ordures, sort de deux ordres de grandeur à l'avance de Ruby, Python, PHP, etc. dans le plus algorithmique, moins d'allocation de mémoire intensive des repères ci-dessus)
  • Ruby appels de méthode sont lent (bien que, en raison de duck-typing, ils sont sans doute plus rapide que dans les langages fortement typés)
  • Ruby (à l'exception de JRuby) ne prend pas en charge la vraie multithreading
  • etc.

Mais, là encore, lent à l'égard de quoi? Ruby 1.9 est à peu près aussi rapide que Python et PHP (dans un 3x coefficient de performance) par rapport à C (qui peut être jusqu'à 300 fois plus rapide), de sorte que le ci-dessus (à l'exception de filetage considérations, votre application doit dépendent fortement sur cet aspect) sont largement théorique.

Quelles sont vos options en tant que programmeur Ruby si vous voulez traiter avec cette "lenteur"?

Écrire pour l'évolutivité et de le jeter plus de matériel à elle (par exemple la mémoire)

La version de Ruby le mieux adapté à une application comme un Débordement de Pile là où la vitesse est critique, et le trafic est intense?

Eh bien, REE (combiné avec Passager) serait un très bon candidat.

60voto

rjh Points 17192

Voici ce que le créateur de Rails, David Heinemeier Hansson a à dire:

Rails [Ruby] est, pour la grande majorité des applications web Assez Rapidement. Nous suis sites faisant des millions de dynamique pages vues par jour. Si vous vous retrouvez avec le Yahoo ou Amazon avant page, il est peu probable qu'un hors-la-étagère cadre de TOUTE la langue va vous faire beaucoup de bien. Vous aurez probablement à rouler votre propre. Mais bien sûr, j'aimerais gratuit de cycles CPU. J' se soucie beaucoup plus gratuit pour les développeurs et les cycles suis prêt pour le commerce de l'ancien pour ce dernier.

c'est à dire de jeter du matériel ou des machines, le problème est moins cher que d'embaucher plus de développeurs et d'utiliser une plus rapide, mais en plus difficiles à maintenir la langue. Après tout, peu de gens écrire des applications web en C.

Ruby 1.9 est une grande amélioration par rapport à 1,8. Les plus gros problèmes avec Ruby 1.8 sont son interprétation de la nature (pas de pseudo-code binaire, pas de compilation) et que les appels de méthode, l'une des opérations les plus courantes en Ruby, sont particulièrement lents.

Cela n'aide pas que à peu près tout est une méthode de recherche en Ruby - ajouter deux nombres, l'indexation d'un tableau. Là où d'autres langues exposer hacks (Python __add__ méthode, Perl surcharge.h) Ruby n'pur OO dans tous les cas, et cela peut nuire à la performance si le compilateur/interpréteur n'est pas assez intelligent.

Si j'avais écrit un populaire d'applications web en Ruby, mon accent sera mis sur la mise en cache. Mise en cache d'une page réduit le temps de traitement pour que la page à zéro, quelle que soit la langue que vous utilisez. Pour les applications web, base de données, frais généraux et autres I/O commence à la matière beaucoup plus que la vitesse de la langue, donc je mettrait l'accent sur l'optimisation.

34voto

GregS Points 16158

L'écriture de code est lente. La lecture du code est lente. Trouver et corriger les bogues est lent. L'ajout de fonctionnalités et d'améliorations est lent. Tout ce qui améliore le précédent est une victoire. La performance d'exécution est très rarement un problème.

15voto

Bryan Oakley Points 63365

La réponse est simple: les gens disent que le rubis est lent parce qu'il est lent sur la base de comparaisons mesurées avec d'autres langues. Gardez à l'esprit, cependant, "lent" est relatif. Souvent, le rubis et d'autres langages "lents" sont assez rapides.

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