Pour développer sur Ryan Doherty réponse un peu...
Je travaille dans un langage statiquement typé pour mon travail de jour (.NET/C#), ainsi que le Rubis que d'un côté de la chose. Avant ma journée de travail, j'ai été le principal programmeur pour un développement ruby entreprise effectuant des travaux pour le New York Times, la Syndication de service. Avant cela, j'ai travaillé en PHP (bien que long, il y a longtemps).
Je dis ça simplement pour dire ceci: j'ai connu des rails (et, plus généralement, ruby) les problèmes de performances de première main, ainsi que quelques autres alternatives. Comme dit Ryan, vous n'allez pas l'avoir mise à l'échelle automatiquement pour vous. Il faut du travail et énormément de patience pour trouver votre goulets d'étranglement.
Une grande majorité des problèmes de performances, nous avons vu d'autres et nous-mêmes avaient à faire avec la lenteur de l'exécution des requêtes dans notre couche ORM. Nous sommes allés à partir de Rails/ActiveRecord pour Rails/DataMapper et enfin de Merb/DM, à chaque itération d'obtenir plus de vitesse tout simplement parce que les structures sous-jacentes.
La mise en cache incroyables merveilles de la performance. Malheureusement, nous n'avons pas la mise en cache de nos données. Notre cache serait effectivement invalidé toutes les cinq minutes au plus. Presque tous les bits de notre site a été dynamique. Donc, si/lorsque vous ne pouvez pas le faire, peut-être que vous pouvez apprendre de notre expérience.
Nous avons eu pour la fin de sérieux affiner notre index de base de données, faire en sorte que nos requêtes n'étaient pas très stupide des choses, faire en sorte que nous n'étions pas de l'exécution de requêtes plus que ce qui était absolument nécessaire, etc. Quand je dis "très stupide des choses", je veux dire le 1 + N requête problème...
#1 query
Dog.find(:all).each do |dog|
#N queries
dog.owner.siblings.each do |sibling|
#N queries per above N query!!
sibling.pets.each do |pet|
#Do something here
end
end
end
DataMapper est un excellent moyen de gérer le problème ci-dessus (il n'y sont pas de 1 + N des problèmes avec elle), mais une meilleure façon de le faire est d'utiliser votre cerveau et arrêter de faire des requêtes comme ça :D Quand vous avez besoin de performances brutes, la plupart de l'ORM couches ne sera pas facilement manipuler extrêmement requêtes personnalisées, de sorte que vous pourriez aussi bien écrire à la main.
Nous avons également fait le sens commun des choses. Nous avons acheté un costaud serveur pour la croissance de notre base de données, et l'a déplacé sur sa propre case dédiée. Nous avons également eu à faire des TONNES de données et de traitement de l'importation en permanence. Nous avons déménagé notre traitement sur sa propre boîte. Nous avons également arrêté le chargement de l'ensemble de notre flipper pile juste pour nos données utilitaires d'importation. Nous avec goût, chargé seulement de ce que nous avons absolument besoin (réduisant ainsi la charge de la mémoire!).
Si vous ne pouvez pas dire déjà... en général, quand il s'agit de ruby/rails/merb, vous avez à l'échelle de sortir, jeter le matériel sur le problème. Mais en fin de compte, le matériel est bon marché; même si c'est pas une excuse pour la mauvaise qualité de code! :D
Et même avec ces difficultés, personnellement, je n'aurais jamais lancer des projets dans un autre cadre, si je peux l'aider. Je suis en amour avec la langue, et continuellement en savoir plus à propos de tous les jours. C'est quelque chose que je n'ai pas de C#, mais C# est plus rapide.
J'aime aussi les outils open source, le faible coût pour commencer à travailler dans la langue, le faible coût pour simplement faire quelque chose là-bas et essayer de voir si c'est vendable, tout en travaillant dans une langue qui souvent peut être belle et élégante...
En fin de compte, il est tout au sujet de ce que vous voulez vivre, de respirer, de manger et de dormir dans les jours quand il s'agit de choisir votre cadre. Si vous aimez Microsoft façon de penser, aller .NET. Si vous souhaitez open source, mais encore envie de la structure, essayez de Java. Si vous voulez avoir un langage dynamique et avoir encore un peu plus de structure que le rubis, essayez de python. Et si vous voulez l'élégance, essayez de Ruby (j'ai gamin, je ne plaisante... il y en a beaucoup d'autres élégante langues qui répondent à la loi. Ne pas essayer de démarrer une guerre du feu :D)
L'enfer, toutes les essayer! J'ai tendance à être d'accord avec les réponses ci-dessus que les soucis d'optimisations début n'est-ce pas la raison pour laquelle vous devriez ou ne devriez pas choisir un cadre, mais je suis en désaccord que c'est leur seule réponse.
Donc, en bref, oui il y a des difficultés à surmonter, mais l'élégance de la langue, à mon humble avis, l'emporte de loin sur ces lacunes.
Désolé pour le roman, mais j'y ai été et à l'arrière avec des problèmes de performances. Il peut être surmonté. Donc, ne vous laissez pas vous effrayer.