2008-08-25 7 views
7

Ich bin sehr daran interessiert, meine erste Ruby-App zu entwickeln, da meine Firma den Einsatz intern endlich gesegnet hat.Ruby Performance

In allem, was ich über Ruby bis zu V1.8 gelesen habe, gibt es nie etwas Positives über die Leistung, aber ich habe nichts über Version 1.9 gefunden. Die letzten Zahlen, die ich über 1,8 gesehen habe, hatten es drastisch langsamer als so ziemlich alles da draußen, also hoffe ich, dass das in 1.9 angesprochen wurde.

Wurde die Leistung drastisch verbessert? Gibt es einige konkrete Dinge, die mit Ruby-Apps (oder zu vermeidenden Dingen) getan werden können, um die Leistung auf dem bestmöglichen Niveau zu halten?

Antwort

2

Matz Ruby 1.8.6 ist viel langsamer, wenn es um die Leistung geht, und 1.9 und JRuby beschleunigen es sehr. Die Leistung ist jedoch nicht so, dass Sie in einer Webanwendung nicht alles tun können, was Sie möchten. Es gibt viele große Ruby-on-Rails-Sites, die gut mit der "langsam interpretierten" Sprache zurechtkommen. Wenn Sie Web-Anwendungen skalieren, gibt es viel mehr Leistungsprobleme als die Geschwindigkeit der Sprache, in der Sie es schreiben.

4

Wenn Skalierbarkeit und Leistung wirklich wichtig für Sie sind, können Sie auch Ruby Enterprise Edition. Es ist eine benutzerdefinierte Implementierung des Ruby-Interpreters, die viel besser bei der Speicherzuweisung und der Speicherbereinigung sein soll. Ich habe keine objektiven Metriken gesehen, die es direkt mit JRuby vergleichen, aber alle Beweise, die ich gehört habe, waren sehr, sehr gut.

Dies ist von der gleichen Firma, die Passenger (aka mod_rails) erstellt, die Sie auf jeden Fall als eine Schiene Deployment-Lösung auschecken sollten, wenn Sie sich entschließen, die JRuby-Route zu gehen.

0

Ich bin kein Programmierer Rubin, aber ich habe in einem JRuby Einsatz in letzter Zeit ziemlich eng beteiligt und kann daher einige Schlussfolgerungen ziehen . Erwarte nicht viel von JRubys Leistung. Im interpretierten Modus scheint es irgendwo im Bereich von C Ruby zu liegen. JIT-Modus könnte schneller sein, aber nur in der Theorie. In der Praxis haben wir den JIT-Modus auf Glassfish für eine anständige Rails-Anwendung auf einem mittelgroßen Server (Dual-Core, 8 GB RAM) ausprobiert. Und die Wahrheit ist, das JITting nahm so freakly viel Zeit, dass der Server 20-30 Minuten brauchte, bevor er die erste Anfrage beantwortete. Die Speicherbelegung war astronomisch, Profiling funktionierte nicht, weil das gesamte System mit einem angehängten Profiler gestoppt wurde.

Fazit: JRuby hat seine Vorteile (Multithreading, solide Plattform, einfache Java-Integration), aber da der interpretierte Modus der einzige Modus ist, der für uns in der Praxis funktionierte, ist es wahrscheinlich nicht besser als C Rubin.

-1

Ich würde die Empfehlung der Verwendung von Passenger Sekunde - es macht die Bereitstellung und Verwaltung von Rails-Anwendungen trivial