Dal linguaggio di scripting al linguaggio compilato o al linguaggio compilato puro, che è più veloce?[Chiuso]

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

Domanda

Recentemente ho codificato un'applicazione in jruby e ne ho creato un file .jar e lo ho distribuito in Tomcat.Ho anche letto un articolo su jruby che dice "Jruby: scalabilità di Java e facilità di Ruby".

Qui voglio sapere se una codifica come questa in jruby offre la stessa scalabilità e prestazioni della codifica diretta in Java?

Proprio in questo modo l'uso dell'estensione Ruby per eseguire il codice C in Ruby offre le stesse prestazioni della codifica diretta in c.

Grazie

È stato utile?

Soluzione

(Disclaimer:questa potrebbe non essere una risposta completa ma era troppo lunga per un commento)

Sebbene non abbia quasi nessuna esperienza con l'implementazione di JRuby in particolare, i linguaggi dinamici implementati sulla JVM hanno i loro limiti in termini di velocità che puoi ottenere rispetto a quella che otterresti se codificassi direttamente in Java.

Da quanto ho capito, ciò deriva dai compromessi implementazioni del linguaggio client (JRuby, Clojure, Jython, ecc.) devono effettuare, per "simulare" il loro funzionamento interno sulla piattaforma ospitante (in questo caso il JVM).Forse negli scenari più comuni la differenza di prestazioni non è così grave poiché entrano in gioco le ottimizzazioni HotSpot della JVM, ma quando si tratta di ottenere prestazioni del codice simili a Java, potrebbe essere necessario immergersi nei dettagli dell'implementazione del linguaggio per aggirare alcuni dei suoi limiti.

Nel caso del Rubino estensioni dentro C, ciò che stai effettivamente eseguendo è il codice nativo (linguaggio macchina) originariamente codificato C, ma che puoi chiamare dal tuo codice Ruby.Durante la corsa JRuby code, è la lingua in cui stai programmando Rubino, che deve essere compilato Giava bytecode, che viene eseguito su JVM, che lo traduce in operazioni nel sistema operativo nativo.Qualcosa di analogo a Rubino/C sarebbe in questo caso JRuby/Java, questo significherebbe chiamarne alcuni Giava codice, in cui è stato originariamente scritto Giava dal tuo JRuby programma.

MODIFICARE

Questo discussione menziona alcuni dei punti che ho incluso sopra e una spiegazione più dettagliata su alcuni altri punti interessanti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top