Wie kann jRuby Ladezeit verbessert werden?

7

Ich muss ziemlich lange warten (im Vergleich zu meinen Freunden Maschinen) für die Ausführung von Skripten auf jRuby, besonders wenn ich Rake-Aufgaben oder Tests ausführen. Ich habe versucht, jRuby Version 1.3.1 und 1.4.1 mit und ohne Ruby-Debug-Juwel und das gleiche Problem trat in jeder Konfiguration auf.

Die Frage ist einfach: Gibt es eine Möglichkeit, den jRuby-Ladeprozess zu verbessern? ..oder habe ich etwas falsch mit meiner jvm-Konfiguration oder jRuby-Installation (ich benutze jRuby über rvm - ruby ​​version manager)?

    
luacassus 08.02.2010, 19:14
quelle

4 Antworten

14

Es gibt ein paar Dinge, die Sie ausprobieren könnten:

  • benutze die neueste und beste Version von JRuby (aufgrund der umfangreichen Testsuites, selbst der blutigste Git-Master-Zweig ist normalerweise ziemlich stabil), sie arbeiten ständig an der Startzeit
  • wählen Sie Ihre JVM mit Bedacht, Oracle JRockit zum Beispiel ist auf Server ausgerichtet und daher ist die Startleistung kein Problem (diese Apps werden nur alle paar Jahre neu gestartet), Sun hat den Desktop in den letzten zehn Jahren hauptsächlich vernachlässigt oder also, aber seit 1.6u12 (versuche das vor kurzem erschienene 1.6u18) und auch in 1.7 immer besser geworden. IBMs J9 soll auch ziemlich leicht sein.
  • probiere nailgun, ein Projekt, das eine JVM als Daemon im Hintergrund laufen lässt (es gibt eine eingebaute Unterstützung in JRuby, versuche deine Skripte mit jruby --ng auszuführen)
  • verwende JRuby einfach nicht für Unit-Tests und Rake-Aufgaben: Das ThoughtWorks Mingle-Team verwendet beispielsweise MRT für Komponententests, Rake-Aufgaben und Entwicklung und JRuby für Integrationstests, Regressionstests und Produktion. (Dies funktioniert natürlich nur, wenn Sie keine Java-Bibliotheken in Ihren Rake-Aufgaben und -Tests verwenden.)

Allerdings sind Tests und Skripte das Worst-Case-Szenario für JRuby. Die JRuby-Laufzeit allein ist schon ziemlich schwer, viel schwerer als MRT. Das Laden des gesamten Biest von der Festplatte in den Arbeitsspeicher kann schon länger dauern, als das gleiche Skript in der MRI laufen zu lassen. Und wir haben noch nicht einmal die Startzeit für die JVM hinzugefügt!

    
Jörg W Mittag 08.02.2010, 20:58
quelle
4

Stellen Sie außerdem sicher, dass Sie JVM im Modus Client ausführen (vorausgesetzt, Sie verwenden Suns JVM), da dieser Modus einen schnelleren Start und eine bessere Gesamtleistung für Testsuiten bietet. JRuby sollte JVM standardmäßig im Client-Modus verwenden, dies hängt jedoch vom System und Ihren JVM-Einstellungen usw. ab. Um zu überprüfen, ob Sie Client-JVM verwenden, rufen Sie jruby -v auf, und Sie sollten so etwas sehen.

%Vor%

Aktualisieren : Sehen Sie sich den Blogbeitrag von Charles mit Tipps zur Verbesserung des Startup an: Ссылка

    
vsizikov 16.02.2010 11:18
quelle
1

spork kann helfen, wenn die Unit-Tests die Zeit auf

verbessern möchten     
rogerdpack 29.09.2010 16:09
quelle
0

JRuby hat jetzt ein --dev -Flag, das viele schnelle Optionen kombiniert. Ich habe meine Modellprüfungen auf Rails 5 und JRuby 9.1.7.0 mit über 80% Verbesserung durchgeführt!

%Vor%

Möchten Sie nicht alles eingeben? Erstelle ein Makefile! Sie können -G hinzufügen, um bundle exec

einzuschließen %Vor%

Dann einfach

ausführen %Vor%

Quelle: Ссылка

    
HarlemSquirrel 26.05.2017 15:30
quelle

Tags und Links