ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 22 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Performance von Rails
BeitragVerfasst: 13 Nov 2004, 23:57 
Offline
Geselle

Registriert: 06 Okt 2004, 09:50
Beiträge: 157
Hi,

also erstmal muss ich sagen: GENIAL!! ;))

Ich habe es nun endlich geschafft Ruby auf meinem Server zum Laufen zu kriegen. Sogar eRuby läuft und Rails läuft nun auch und Rails ist echt stark. Allerdings kommt mir Rails etwas langsam vor. Ich hab damit jetzt etwas rumgespielt und die Seiten brauchen doch etwas länger, bis sie angezeigt werden, als andere Seiten auf dem Server, insbesondere PHP-Seiten. Ist Rails einfach langsamer? Also es dauert jetzt keine Stunde bis eine Seite angezeigt wird *g* Aber es dauert schon doppelt so lange wie bei anderen Webseiten. Kann ich das noch irgendwie tunen? Ich habe bereits mod_ruby installiert und auch wie auf der Homepage installiert das RubySafeLevel auf 0 gestellt.

(Kann mir jemand erklären, wofür das SafeLevel ist?)

Hat noch eine jemand Idee, wie ich das schneller kriege? Oder geht das einfach nicht?

Danke im voraus

Mike


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 14 Nov 2004, 00:29 
Offline
Ex-Admin
Benutzeravatar

Registriert: 12 Mai 2003, 18:49
Beiträge: 890
Wohnort: Kiel
Moin!

Zitat:
(Kann mir jemand erklären, wofür das SafeLevel ist?)

Es erhöht die Sicherheit. ;) Ruby merkt sich für jede Variable, ob ihr Inhalt aus einer vertrauenswürdigen Quelle stammt (im dem Script hartgecodet) oder ob sie aus einer Quelle stammt, die potentiell Böse sein kann (Tastatur, Internet, Umgebungsvariablen, etc.). Dann wird sie als vergiftet (tainted) markiert, und wenn $SAFE >= 1 ist, werfen gefährliche Befehle wie eval oder so eine Exception. Mehr siehe Doku.

iGEL

_________________



# Kein Kommentar!!


Zuletzt geändert von iGEL am 14 Nov 2004, 00:57, insgesamt 1-mal geändert.

Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 14 Nov 2004, 00:44 
Offline
Geselle

Registriert: 06 Okt 2004, 09:50
Beiträge: 157
Ah oki danke. Ich versuch immer noch Rails zu tunen, aber ich finde nichts, was ich noch machen könnte. Ich glaub ich hab alles gemacht, was so in der Doku steht.

Gruß

Mike


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 14 Nov 2004, 02:19 
Offline
Meister

Registriert: 25 Jun 2002, 20:39
Beiträge: 276
Wohnort: Hamburg
du kannst PHP und Rails wirklich nicht miteinander vergelichen.
Das sind zwwei total verschiedene Sachen.
Rails ist ein komplexes Framework. Im Hintergrund läuft einiges an Logik ab welches dem Programmierer sehr viel arbeit abnimmt.
Kein wunder das es langsamer ist.

tip: Ich würde auch rails mal Fastcgi testen
Bei fastcgi wird nur ein ruby Prozess gestartet.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 14 Nov 2004, 02:21 
Offline
Geselle

Registriert: 06 Okt 2004, 09:50
Beiträge: 157
Hm, ich hätte nicht gedacht, dass es soviel ausmacht. Aber ist ja noch erträglich und spart enorm viel Programmierarbeit. Also das ist echt faszinierend. Ich hab zwar noch nicht so ganz den Durchblick, wofür was ist und wie das alles funktioniert, aber was ich bisher kann ist wahnsinn. :)

Gruß

Mike


Nach oben
 Profil  
 
 Betreff des Beitrags: Rails Tuning?
BeitragVerfasst: 14 Nov 2004, 16:32 
Offline
Schüler

Registriert: 30 Jun 2004, 10:26
Beiträge: 20
Wohnort: Frankfurt
Hallo,

mir ist aufgefallen, dass activerecord (das Basis-Modul von Rails) ziemlich
langsam ist, wenn MySql auf einer Reiser-Partition läuft. Mit MySql
auf ext2 fläuft es bei mir *wesentlich* schneller. Meine Installation
ist auf SuSe 8.2. Die Ursache ist mir nicht ganz klar, denn der MySql
benchmark zeigt auf ext2 vs. reiser nur geringe Unterschiede auf.

-klaus.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 14 Nov 2004, 16:51 
Offline
Geselle

Registriert: 06 Okt 2004, 09:50
Beiträge: 157
Hi,

danke für Deine Antwort.

Hab bei mir Rails unter SuSE 9.0 auf einer Ext3 laufen mit MySQL. Es ist ja nicht sooo langsam, aber halt wesentlich langsamer als einfach Ruby - oder php Files.


Gruß

Mike


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 14 Nov 2004, 17:38 
Offline
Meister

Registriert: 25 Jun 2002, 20:39
Beiträge: 276
Wohnort: Hamburg
Activerecord der Bestandteil von Rails ist ein object relationaler DB Mapper.
Wie gesagt, dahinter steckt eine Menge an Logik. Das macht die Sache einfach langsamer als wenn man SQL Queries selbst auf die Datenbank abfeuert. Du kannst dir ja mal das PEAR Package DataObjects für PHP ansehen. Das arbeitet ähnlich, dann wirst du sehen, dass jenes auch viel langsamer ist. Man muß sich eben entscheiden. Will man wiederverwendbaren Code (Datenbakschnittstelle) oder eben Performanz.
Wie gesagt, Rails ist mehr. Es handelt sich dabei um ein web Framework. Es sorgt dafür, dass die Parameter (über POST,GET) an die richtige Stelle gelangen (Controller), die Validierung von Paramtern, die Trennung von Code und Design etc.
In PHP mußt Du dich um viele Sachen selber kümmern, die Dir Rails abnimmt. Als vergleichbares Beispiel könnte ich hier z.B. das PHP Framework Phrame, mojavi, PRADO, etc. anführen. Auch da wirst Du sehen, dass die Bearbeitung eines Request sehr viel mehr Zeit in Anspruch nimmt als normal.

Der Vorteil eines Web Frameworks rechtfertig zum größen Teil jedoch Performanzeinbußen. Das heisst nicht das ich nun ein totaler verfechter von Rails bin. Das MVC Prinzip nach dem Rails arbeitet halte ich nicht immer für Web-Applikationen gegeignet.
Es gibt andere Konzepte die mir besser gefallen. Ich denke mehr an einen Komponenten basierten Ansatz. Siehe Java Bereich (JavaServer Faces, Tapsery, ASP.NET, Tapestry (java), PRADO (PHP))
Als Activerecord Ersatz unter Java z.b. JDO.
Obwohl ich sagen das Activerecord im vegleich zu anderen Technologien mit erstaunlich wenig Code, Konfigurationsdateien auskommt.
Das liegt jedoch an Ruby selber. Ruby ist eben eine superdynamische Sprache.

Beruflich muss ich mit PHP areiten. Java interessiert mich, weil viele interssante Technologien aus diesem Bereich kommen. Leider wird in Java alles einfach zu gross und unhandlich.
Ruby begeistert mich privat. Ich würde gerne mehr in Ruby machen.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 14 Nov 2004, 18:28 
Offline
Geselle

Registriert: 06 Okt 2004, 09:50
Beiträge: 157
Hi,

also ich hatte mit sowas wie Rails noch nie zu tun. Solche Frameworks sind mir also völlig neu, weshalb ich auch sehr begeistert bin, aber keinen Vergleich zu anderen habe. Aber die Einfachheit der ganzen Sache entschuldigt die etwas schlechtere Performance.

Ansonsten verwende ich Ruby auch nur privat, weil es mich fasziniert. Sonst arbeite ich meist mit PHP und C. Ich habe auch schon eine Zeit lang Java gemacht und es war eigentlich ganz nett, weil doch viele Dinge sehr einfach waren und die Java API sehr gut dokumentiert war, was die Arbeit damit sehr angenehm gemacht hat.

Ohne jetzt groß auf die Gründe einzugehen: Ich bin auf jeden Fall wieder von Java weggekommen und irgendwann auf Ruby gestoßen. Irgendwie ist Ruby nun für mich eine Art Ersatz für Java. Es ist zwar interpretiert, aber das stört mich nicht. Java hat ja auch nur Bytecode erzeugt und es gibt soweit ich weiß ja schon Just In Time Compiler für Ruby. Glaube da mal was gehört zu haben.

Ruby mag langsamer als Java sein, aber wenn man wirklich performante Anwendungen will ist Java auch nicht so das wahre. Und ich finde Ruby noch eine Ecke angenehmer zu programmieren, als Java und es ist IMHO wesentlich durchsichtiger und logischer. Ruby ist auch nicht schlechter dokumentiert als Java und mit den RubyDocs hat man ähnliche Möglichkeiten, wie mit JavaDocs.

Außerdem bietet mir Ruby Bindings für z.B. Qt, damit ich meine graphischen Oberflächen programmieren kann, wenn ich keine Lust auf C habe, was auch erstaunlich gut funktioniert. Das gibt es zwar für Java auch, aber das hat bei mir nie wirklich gut funktioniert.

Wenn ich also eine einfache Sprache möchte, die zwar langsamer ist erfüllt Ruby genau meine Ansprüche.

Problem ist jedoch, dass ich eben wie gesagt viel Zeit mit C und PHP verbringe und eine kommerzielle Webanwendung mit Ruby...? Ob das gut läuft? Ruby ist kaum auf Webservern vertreten. Mit Rails wird es noch schwieriger, das irgendwo installieren zu können, wenn man nur einfachen Webspace hat.

Ich für meinen Teil werde auf jeden Fall mit Ruby weiterspielen, weil es mich sehr faszinierend. Performance hin oder her :) Außerdem ist Ruby zwar über 10 Jahre alt, aber hat nicht diese große Entwicklergemeinde, wie Java oder PHP. Ruby steht daher hier im Westen erst noch am Anfang. Ich glaube daher, dass sich da noch einiges tun wird. Vielleicht ist der Ruby JIT Compiler ja ein erster Schritt für bessere Performance. Außerdem gibt es immer mehr Bindings für Ruby und bei HostEurope auch die ersten Webspaces mit Ruby.

PHP ist zwar nicht älter als Ruby, aber hat sich eben wesentlich schneller durchgesetzt. Bis Ruby genausoviel Verbreitung findet dauert es wohl noch etwas, aber es ist auf dem richtigen Weg :)

Gruß

Mike


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 14 Nov 2004, 22:27 
Offline
Schüler

Registriert: 30 Jun 2004, 10:26
Beiträge: 20
Wohnort: Frankfurt
leobm hat geschrieben:
Activerecord der Bestandteil von Rails ist ein object relationaler DB Mapper.
Wie gesagt, dahinter steckt eine Menge an Logik. Das macht die Sache einfach langsamer als wenn man SQL Queries selbst auf die Datenbank abfeuert.


.... ja aber in der J2EE Theorie zumindest agiert das Objekt doch als "caching proxy" für die Datenbank, sodass man sich den DB Zugriff spart, und dann sollte es doch schneller sein, oddrr? Das ist jedenfalls das Argument der J2EE Evangelisten.


leobm hat geschrieben:
Ruby begeistert mich privat. Ich würde gerne mehr in Ruby machen.


Sehe ich auch so. ;-)

-klaus


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 14 Nov 2004, 22:55 
Offline
Geselle

Registriert: 06 Okt 2004, 09:50
Beiträge: 157
Hi,

Du meinst dass nur eine Connection dauerhaft existiert und nicht jedes mal eine neue Connection erstellt werden muss? Das müsste doch mit Ruby auch gehen oder?

Mike


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 15 Nov 2004, 01:08 
Offline
Schüler

Registriert: 30 Jun 2004, 10:26
Beiträge: 20
Wohnort: Frankfurt
miketech hat geschrieben:
Hi,
Du meinst dass nur eine Connection dauerhaft existiert und nicht jedes mal eine neue Connection erstellt werden muss? Das müsste doch mit Ruby auch gehen oder?
Mike


Das wäre normales JDBC connecion-pooling. Aber was ich meinte sind Entity-Beans die als Proxy für Datenbank-Tabellen dienen, so dass nicht jedesmal auf die Datenbank zugegriffen werden muss. Richtige tiefe Kenntnisse habe ich da aber auch nicht. ;-)

-klaus


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 21 Nov 2004, 19:50 
Offline
Schüler

Registriert: 14 Apr 2004, 18:04
Beiträge: 49
Wohnort: Berlin
Also das wichtigste ist noch gar nicht angesprochen worden.

Läuft Rails im CGI Mode dann ist es natürlich etwa Faktor 100 (!!) bei einfachne "Hello World" Skripten langsamer als PHP. Das ganze dreht sich aber um wenn man es korrekt konfiguriert und z.B. mit dem Fast-CGI modul laufen lässt. Mod_Ruby wird aus gutem Grund von Profis nicht empfohlen.

Generel gilt je komplizierter die Anwendung desto schneller dreht sich das Blatt. Bei Fast-CGI "Hello World.rhtml" erreichst du schon die gleiche Performance wie unter PHP. Danach geht es steil aufwärts. Ich stehe mit einigen Leuten in Kontakt die sich damit ihre Brötchen verdienen.

_________________
IDE's für Ruby, Python, PHP
www.scriptolutions.com
CTO Lothar Scholz


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 21 Nov 2004, 20:01 
Offline
Geselle

Registriert: 06 Okt 2004, 09:50
Beiträge: 157
Hi,

also bei mir läuft sowohl Fast-CGI, als auch mod_ruby. Sucht sich Rails dann das entsprechende aus? Bzw. kann ich irgendwie überprüfen, was er nimmt?

Gruß

Mike


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 22 Nov 2004, 10:58 
Offline
Rubyist
Benutzeravatar

Registriert: 09 Dez 2003, 23:05
Beiträge: 352
Hi
llothar hat geschrieben:
Mod_Ruby wird aus gutem Grund von Profis nicht empfohlen.


Welcher "gute Grund" ? Ich Plane das bald mal bei uns aufzusetzen nur brauch ich ein paar Gruende gegen mod_ruby - will ja objektiv bleiben.
Olli


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 22 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
cron