2009-10-20 7 views

Respuesta

12

Ver http://benchmarksgame.alioth.debian.org/. Java es muy rápido, Scala casi tan rápido. JRuby es 10-30 veces más lento. Groovy es slow too.

+0

¡Qué extraño! El texto dice "http://shootout.alioth.debian.org/", pero que no es en el que el enlace te lleva ... – igouy

+0

"JRuby es 10-30 veces más lento" - sin preocuparse de múltiples núcleos, los programas de puntos de referencia de juegos el más rápido 2x más lento y el más lento 87x más lento http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=jruby&lang2=scala&box=1 – igouy

+0

@igouy: por fin me fijo en el enlace, 19 meses más tarde. :-( –

1

Java.

Realmente, en su mayor parte, la diferencia de velocidad será insignificante. Los lenguajes estáticos serán más rápidos que los lenguajes dinámicos, pero no mucho.

+2

Si bien Java es el más rápido, a menudo es una cantidad * enorme *. Eche un vistazo a http://shootout.alioth.debian.org/ y compare JRuby vs Java. –

+0

Bueno, mira eso. Tienes razón. –

-3

Cualquier lenguaje que se compile en bytecodes se ejecutará igual de rápido en una JVM con JIT.

+5

El uso masivo de la reflexión por groovy y ruby ​​los hace más lentos en comparación con Java simple. Pero de acuerdo con el JSR-292 (http://jcp.org/en/jsr/detail?id=292), que debería mejorar con java 7. – vdr

+0

Por lo que yo sé, JRuby es un intérprete, y por lo tanto la El código de Ruby no está compilado en bytecodes. ¿El JIT no acomoda parte del trabajo extra? –

+0

"Destilación JRuby: El compilador JIT" http://www.realjenius.com/2009/10/06/distilling-jruby-the-jit-compiler/ – igouy

1

Como dice Anthony, Java es el lenguaje más rápido.

Los idiomas con tipado estático (Java, Scala) son más rápidos que los dinámicos (Groovy, JRuby).

1

Tienes que tener cuidado con lo que estás comparando. Además del "depende de lo que esté haciendo con él" que otros han mencionado también depende cómo lo hace.

Por ejemplo, un lenguaje como Scala puede permitirle expresar expresiones idiomáticas y algoritmos que probablemente tomaría un largo camino en Java. Eso no quiere decir que no puedas igualar el rendimiento de Scala al hacer lo mismo, solo que puede convertirse en una solución fea en un idioma para que coincida con los modismos naturales en otro (nota, no estoy diciendo que creo que Scala es más rápido que Java en algo específico, no tengo datos sobre eso, aparte de que Scala está diseñado teniendo en cuenta la escalabilidad, de ahí el nombre).

En otras palabras, el rendimiento es por lo general acerca de los algoritmos y, a menudo la elección de los algoritmos son acerca de la facilidad de expresión. Así que "use las herramientas adecuadas para el trabajo" se aplica aquí, ya sea que esa herramienta sea Java, Scala, JRuby o lo que sea (aunque dudo que existan situaciones en las que un lenguaje dinámico sea más rápido que uno estático sin ser patológico).

Por supuesto, también podríamos hablar de perfiles antes de optimizar etc, pero que no aborda directamente la cuestión.

+0

"Scala está diseñado con la escalabilidad en mente - de ahí el nombre". No creo que eso es lo que entiende por escalable, que significaban "conceptos escala bien a grande programas "http://www.scala-lang.org/node/250 – igouy

+0

Creo que es un término sobrecargado, pero definitivamente hay una alusión al procesamiento paralelo. Al hacer que sea más fácil escribir aplicaciones concurrentes, pueden escalar mejor, y esto el rendimiento total puede mejorar, incluso si, por instrucción, que son los mismos o más lento por supuesto que no es útil para todo tipo de problemas – philsquared

+0

"definitivamente había una alusión al procesamiento en paralelo" -.. en su mente, pero ¿dónde se vinculan que al nombre? – igouy

-1

creo que dependerá de lo que entendemos por más rápido, y lo bien que el lenguaje está escrito para el rendimiento.

Por ejemplo, si está haciendo algo matemáticamente intensivo, entonces Scala será más rápido que Java.

Pero, si evita las funciones que son lentas en Java y las usa en todos los lugares donde tiene sentido, puede hacer que Java corra más rápido que Scala, según me dijeron recientemente en una entrevista.

Por lo tanto, esta es una pregunta difícil de responder en generalidades, ya que las personas mostrarán instancias en las que Scala o Java serán más rápidos.

embargo, creo que Scala será en general más rápido, si no está utilizando var s, pero val lugar.

+0

"Por ejemplo, si estás haciendo algo matemáticamente intensivo, entonces Scala será más rápido que Java". ¿Puedes demostrar que es cierto? – igouy

+0

Podría, pero pasará un tiempo, pero debido al diseño de Scala, si tiene un problema que es fácil de hacer en paralelo, como el elemento matemático de finito, entonces Scala será más rápido debido a que aprovecha la programación funcional aspectos, pero, como mencioné, puede presentar argumentos para mostrar, depende del problema y de cuán bien se escribió cada idioma. –

+0

"si tiene un problema que es fácil de hacer en paralelo", como la norma espectral? http://shootout.alioth.debian.org/u32q/benchmark.php?test=spectralnorm&lang=scala&id=2 – igouy

Cuestiones relacionadas