Gibt es jemand, der in einem Projekt Ruby und Rails benutzt, und was zur Performance sagen kann (z. B. im Vergleich zu PHP)? Optimalerweise ein stark frequentiertes Projekt wie ein Browsergame?
Ich finde nämlich RoR sehr spannend, und überlege, mein Baby von PHP nach RoR zu migrieren bzw. neu zu implementieren - bin aber noch skeptisch, was die Performance im Livebetrieb mit vielen Spielern angehen würde, zumal ich ein recht komplexes Datenbanksystem (MySQL) umsetzen müsste... Darum wär ich dankbar für Hinweise oder Erfahrungsberichte, wie gesagt möglichst mit dem Hintergrund eines anderen Games.
Ruby on Rails Performance - Erfahrungen?
gepostet vor 16 Jahre, 10 Monate von Tweety
gepostet vor 16 Jahre, 10 Monate von Todi42
Financial Rumors ist Server-seitig in Ruby geschrieben und nutzt viele Teile aus Rails (z.B. ActiveRecord). Financial Rumors benutzt allerdings einen modifizierten WEBrick als Comet-Server und das skaliert definitiv _nicht_. Bei 300 Benutzern ist da im Moment Schicht im Schacht.
Je nach dem, wie teuer Du Deine Arbeitszeit einschätzt kann sich RoR aber schnell lohnen, da man damit definitiv viel in wenig Zeit umgesetzt bekommt. Da spielt es unter Umständen gar keine Rolle, ob PHP schneller ist, oder nicht. Hauptsache es skaliert, sprich durch einen höheren Hardware Einsatz, läßt sich der Durchsatz entsprechened (im Idealfall linear) erhöhen.
Und wenn es um die Datenbank geht, ist es eh egal, von wem sie ihre Anweisungen bekommt.
mfg Todi
Je nach dem, wie teuer Du Deine Arbeitszeit einschätzt kann sich RoR aber schnell lohnen, da man damit definitiv viel in wenig Zeit umgesetzt bekommt. Da spielt es unter Umständen gar keine Rolle, ob PHP schneller ist, oder nicht. Hauptsache es skaliert, sprich durch einen höheren Hardware Einsatz, läßt sich der Durchsatz entsprechened (im Idealfall linear) erhöhen.
Und wenn es um die Datenbank geht, ist es eh egal, von wem sie ihre Anweisungen bekommt.
mfg Todi
gepostet vor 16 Jahre, 10 Monate von KoMtuR
Original von Tweety
Gibt es jemand, der in einem Projekt Ruby und Rails benutzt, und was zur Performance sagen kann (z. B. im Vergleich zu PHP)? Optimalerweise ein stark frequentiertes Projekt wie ein Browsergame?
Ich finde nämlich RoR sehr spannend, und überlege, mein Baby von PHP nach RoR zu migrieren bzw. neu zu implementieren - bin aber noch skeptisch, was die Performance im Livebetrieb mit vielen Spielern angehen würde, zumal ich ein recht komplexes Datenbanksystem (MySQL) umsetzen müsste... Darum wär ich dankbar für Hinweise oder Erfahrungsberichte, wie gesagt möglichst mit dem Hintergrund eines anderen Games.
Kann da Todi nur zustimmen.
Alles ist besser als php. Es wurde schon in vielen Threads erörtert. PHP ist nicht durchdacht. Zumindest was die Syntax betrifft. Es geht heute nicht mehr um low-level Programmierung, sondern um die Zeit. Es gibt überdimensionale Hardware und das war früher halt nicht so. Wenn du denkst, dass es dir leichter fällt, dann nutz es. Es geht halt nicht mehr darum den Server zu schonen. Man kann sich einfach bessere Hardware beschaffen (lassen).
@Todi Sorry das ich schon wieder auf Java und Jetty poche. Schonmal JRuby versucht? Jetty+grizzly sollte dir die nötige Skalierung bieten (jaja ich weiß ich bin ein Java Programmierer ).
gepostet vor 16 Jahre, 10 Monate von Kampfhoernchen
Wir schreiben grade unser Projekt von PHP (einige Code-Teile sind noch aus PHP3-Zeiten) auf RoR um. Das Programmieren geht wirklich wirklich fix, muss ich sagen. Performancemäßig würde ich sagen: Es gibt sich im Vergleich zu einem fetten PHP-Framework nicht viel.
Mein aktuelles Ranking für Web-Programmierung:
Ruby
ASP
PHP
C++ mit eigenem Webserver
Brainfuck
Java
Bereits vorher haben wir sämtliche Hintergrundjobs von Java auf Ruby migriert - mit einem Performance-Gewinn (ok, Java war grässlichst programmiert, selbst für Java-verhältnisse). Umfangreiche Kampfscripte geben sich auf allen Programmiersprachen nicht besonders viel (je nach dem wie man optimiert) - wenn Ruby mal den Code interpretiert hat hat es gegenüber PHP keine Nachteile.
Besonders genial an Ruby ist die "Online-Programmierung", mit der ich meine Klassen einfach auf der Kommandozeile testen kann.
Manko: Es gibt recht wenige IDEs. Wir nutzen aktuell Netbeans:
www.netbeans.org/features/ruby/index.html
Mein aktuelles Ranking für Web-Programmierung:
Ruby
ASP
PHP
C++ mit eigenem Webserver
Brainfuck
Java
Bereits vorher haben wir sämtliche Hintergrundjobs von Java auf Ruby migriert - mit einem Performance-Gewinn (ok, Java war grässlichst programmiert, selbst für Java-verhältnisse). Umfangreiche Kampfscripte geben sich auf allen Programmiersprachen nicht besonders viel (je nach dem wie man optimiert) - wenn Ruby mal den Code interpretiert hat hat es gegenüber PHP keine Nachteile.
Besonders genial an Ruby ist die "Online-Programmierung", mit der ich meine Klassen einfach auf der Kommandozeile testen kann.
Manko: Es gibt recht wenige IDEs. Wir nutzen aktuell Netbeans:
www.netbeans.org/features/ruby/index.html
gepostet vor 16 Jahre, 10 Monate von duschendestroyer
Ich bevorzuge Ruby wegen seiner überragenden syntax und den unendlichen möglichkeiten
wobei ich mittlerweile nichtmehr RoR nutze da imo Rails2.0 in die falsche richtung rudert und das framework an sich zu bloated ist
ich nutze zurzeit Ramaze (ramaze.net/ (auf der seite gibts auch eine auflistung anderer alternativer ruby webframeworks wenn man ein stpck runter scrollt)) da es leightweight und enorm flexibel ist.
zur geschwindigkeit von ruby selbst sollte man sagen dass die aktuelle version (1.9.1) durch die neue vm sowohl php als auch python um einiges outperformed. leider wird es noch ein paar monate dauern bis man 1.9 zum produktiv einsatz empfehlen kann und bis alle libs kompatibel sind
übrigend ist Ramaze im gegensatz zu RoR schon 1.9 kompatibel
so far in a nutshell
ich kann auch gerne noch mehr erzählen
@Todi42
Webrick ist nun wirklich nicht für den produktiv einsatz gedacht und wirklich lahm
da wärst du mit mongrel um einiges besser gefahren
wobei ich mittlerweile nichtmehr RoR nutze da imo Rails2.0 in die falsche richtung rudert und das framework an sich zu bloated ist
ich nutze zurzeit Ramaze (ramaze.net/ (auf der seite gibts auch eine auflistung anderer alternativer ruby webframeworks wenn man ein stpck runter scrollt)) da es leightweight und enorm flexibel ist.
zur geschwindigkeit von ruby selbst sollte man sagen dass die aktuelle version (1.9.1) durch die neue vm sowohl php als auch python um einiges outperformed. leider wird es noch ein paar monate dauern bis man 1.9 zum produktiv einsatz empfehlen kann und bis alle libs kompatibel sind
übrigend ist Ramaze im gegensatz zu RoR schon 1.9 kompatibel
so far in a nutshell
ich kann auch gerne noch mehr erzählen
@Todi42
Webrick ist nun wirklich nicht für den produktiv einsatz gedacht und wirklich lahm
da wärst du mit mongrel um einiges besser gefahren
gepostet vor 16 Jahre, 10 Monate von Todi42
Original von duschendestroyer
Webrick ist nun wirklich nicht für den produktiv einsatz gedacht und wirklich lahm
da wärst du mit mongrel um einiges besser gefahren
Aus einem Mongrel hätte ich aber wahrscheinlich nicht durch kleine Änderungen in drei Dateien einen Comet-Server gemacht. Ausserdem kann ich mir nicht vorstellen, welchen großen Einfluß der Webserver auf die Performanze der Applikation haben soll. Das meiste frist der Ruby-Interpreter und die Datenbank.
gepostet vor 16 Jahre, 10 Monate von duschendestroyer
und genau das ist falsch
der ruby interpreter ist in seltensten fällen das bottleneck. es ist möglich durch das deployment einen performance gewinn um einen faktor von bis zu 10 zu erreichen.
folgendes benchmark zeigt zb einen performance unterschied von mehr als 5x zwischen webrick und evented mongrel ramaze.net/benchmarks
andere benchmarks bestätigen das gleiche zum teil sogar extremer
durch das einsetzen mehrerer mongrel instanzen durch einen mongrel cluster lässt sich bei einer mehrkernigen cpu oder einer IO lastigen applikation noch mehr rausholen.
(diese mongrel instanzen können auch auf verschiedenen maschinen laufen wodurch das system auch ganz nett skaliert)
ausserdem gibts noch den relativ neuen webserver Thin der jetzt der schnellste sein soll (sagt zb folgendes benchmark glauche.de/2008/01/12/thin-nginx-with-rails/)
inwiefern es einfach ist diese zu erweitern kann ich nicht einschätzen aber an dieser stelle würde ich den mehraufwand zur performance wagen da webrick einfach nicht für produktivsystem zu empfehlen
der ruby interpreter ist in seltensten fällen das bottleneck. es ist möglich durch das deployment einen performance gewinn um einen faktor von bis zu 10 zu erreichen.
folgendes benchmark zeigt zb einen performance unterschied von mehr als 5x zwischen webrick und evented mongrel ramaze.net/benchmarks
andere benchmarks bestätigen das gleiche zum teil sogar extremer
durch das einsetzen mehrerer mongrel instanzen durch einen mongrel cluster lässt sich bei einer mehrkernigen cpu oder einer IO lastigen applikation noch mehr rausholen.
(diese mongrel instanzen können auch auf verschiedenen maschinen laufen wodurch das system auch ganz nett skaliert)
ausserdem gibts noch den relativ neuen webserver Thin der jetzt der schnellste sein soll (sagt zb folgendes benchmark glauche.de/2008/01/12/thin-nginx-with-rails/)
inwiefern es einfach ist diese zu erweitern kann ich nicht einschätzen aber an dieser stelle würde ich den mehraufwand zur performance wagen da webrick einfach nicht für produktivsystem zu empfehlen
gepostet vor 16 Jahre, 10 Monate von Todi42
Original von duschendestroyer
der ruby interpreter ist in seltensten fällen das bottleneck. es ist möglich durch das deployment einen performance gewinn um einen faktor von bis zu 10 zu erreichen.
folgendes benchmark zeigt zb einen performance unterschied von mehr als 5x zwischen webrick und evented mongrel ramaze.net/benchmarks
Und jetzt? Was mist den dieser Benchmark? Er mist, wie schnell einer Webserver einen Request parsen kann und eine leere Seite ausliefern kann. Da braucht der WEBrick halt drei mal so lange.
Original von duschendestroyer
andere benchmarks bestätigen das gleiche zum teil sogar extremer
durch das einsetzen mehrerer mongrel instanzen durch einen mongrel cluster lässt sich bei einer mehrkernigen cpu oder einer IO lastigen applikation noch mehr rausholen.
Genau! Das ist aber keine Eigenschaft von Mongrel. Ich kann auch andere HTTP-Server parallel laufen lassen (so den die Applikation das zuläßt).
Meine Applikation läßt es nicht zu, da es eine transistente Liste im Server-Prozess gibt. In der Liste sind unter anderem auch sockets enthalten, die sich schwerr über Rechner-Grenzen kommunizieren lassen.
gepostet vor 16 Jahre, 10 Monate von Tweety
Ok, mal zurück zum ursprünglichen Thema: Vielen Dank für eure Postings, das hilft mir auf jeden Fall schonmal weiter.