Skriptsprache zu kompilierter Sprache oder rein kompilierter Sprache, was ist schneller?[geschlossen]

StackOverflow https://stackoverflow.com//questions/23044498

Frage

Kürzlich habe ich eine Anwendung in jruby codiert, daraus eine .jar-Datei erstellt und diese in Tomcat bereitgestellt.Ich habe auch einen Artikel über jruby gelesen, in dem es heißt: „Jruby – Skalierbarkeit von Java und Leichtigkeit von Ruby“.

Hier möchte ich wissen, ob eine solche Codierung in jruby die gleiche Skalierbarkeit und Leistung bietet wie die direkte Codierung in Java?

Genauso bietet die Verwendung der Ruby-Erweiterung zum Ausführen von C-Code in Ruby die gleiche Leistung wie das direkte Codieren in C.

Danke

War es hilfreich?

Lösung

(Haftungsausschluss:Dies ist möglicherweise keine vollständige Antwort, aber für einen Kommentar war es zu lang.)

Obwohl ich insbesondere mit der JRuby-Implementierung so gut wie keine Erfahrung habe, haben auf der JVM implementierte dynamische Sprachen ihre Grenzen hinsichtlich der Geschwindigkeit, die Sie im Vergleich zu der Geschwindigkeit erzielen können, die Sie erreichen würden, wenn Sie direkt in Java codieren würden.

Soweit ich weiß, ist dies auf die Kompromisse bei der Client-Sprachimplementierung zurückzuführen (JRuby, Clojure, Jython, etc.) machen müssen, um ihr Innenleben auf der Host-Plattform (in diesem Fall die JVM).In den häufigsten Szenarien ist der Leistungsunterschied möglicherweise nicht so groß, da die HotSpot-Optimierungen der JVM eingreifen. Wenn es jedoch darauf ankommt, eine Java-ähnliche Codeleistung zu erzielen, müssen Sie möglicherweise in die Details der Sprachimplementierung eintauchen, um dies zu umgehen einige seiner Einschränkungen.

Im Fall der Rubin Erweiterungen in C, was Sie tatsächlich ausführen, ist nativer Code (Maschinensprache), der ursprünglich codiert wurde C, die Sie aber von Ihrem Ruby-Code aus aufrufen können.Beim Laufen JRuby Code ist die Sprache, in der Sie programmieren Rubin, zu dem kompiliert werden muss Java Bytecode, der auf dem läuft JVM, was dies in Vorgänge im nativen Betriebssystem übersetzt.Etwas Analoges zu Rubin/C wäre in diesem Fall JRuby/Java, das würde einige anrufen Java Code, der ursprünglich geschrieben wurde Java von deiner JRuby Programm.

BEARBEITEN

Das Diskussion erwähnt einige der Punkte, die ich oben angeführt habe, und gibt eine ausführlichere Erklärung zu einigen anderen interessanten Punkten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top