Foros - Stratos

Stratos => General => Mensaje iniciado por: Daemon en 10 de Febrero de 2013, 02:29:30 PM

Título: C# vs Java: eficiencia de la VM
Publicado por: Daemon en 10 de Febrero de 2013, 02:29:30 PM
Buenas,

Sé que esta pregunta puede suponer un flame, pero dejando a un lado las preferencias personales de cada uno: ¿conocéis algún estudio medianamente serio (o benchmarks) en donde se establezca qué rendimiento tiene C# vs Java a la hora de ejecutar código (con y sin que intervenga el GC)?

Y sin restringir el campo a estos dos, ¿qué lenguaje utilizáis para programar?

Título: Re:C# vs Java: eficiencia de la VM
Publicado por: echinocactus en 12 de Febrero de 2013, 05:42:46 AM
Hace muchos años que no utilizo Java (desde la v5, aproximadamente). Por aquel entonces utilizaba ambas plataformas y lo curioso que recuerdo es que, en Windows, .NET ofrecía mejor rendimiento, mientras que en Linux lo ideal era Java (en Windows, el rendimiento de Java dejaba mucho qué desear; y en Linux no tenías de otra más que lo que hubiera de Mono en ese momento, para .NET).

Actualmente utilizo C#/.NET casi para todo, incluso juegos (XNA) y acceso a BD (Linq, Entity Framework). No solo estoy cómodo con el lenguaje en sí, sino con todo el entorno de desarrollo, ya sea Visual Studio, TFS y... no mucho más, todo lo tienes a la mano. Mientras que en el ambiente Java se tienen que integrar los pedazos de un ambiente de desarrollo antes de hacer cualquier cosa; hay más opciones, quizá, pero mi interés principal (ahora que me dedico profesionalmente a desarrollar sistemas) es productividad, y con un ambiente .NET siento que de forma inmediata puedo atender problemas (en lugar de arquitecturas y después el problema en sí).

Ésa es mi impresión empírica. Y repito: hace mucho que no utilizo Java. No digo que actualmente no sea una buena plataforma. Simplemente estoy a gusto con C# y .NET.
Título: Re:C# vs Java: eficiencia de la VM
Publicado por: Vicente en 12 de Febrero de 2013, 07:24:55 AM
Yo utilizo C# porque me siento muy muy comodo con el lenguaje, las librerías, el entorno,... Y además me parece que el equipo que lo lleva en Microsoft ha evolucionado el lenguaje a lo largo de los años de forma admirable

En la carrera Java me gustaba un montón, pero creo que al contrario que Microsoft Sun/Oracle no han conseguido evolucionar el lenguaje muy bien (la implementación de genéricos, ahora las lambdas, defensive methods,...).

Pero eso es personal respecto a los lenguajes, en términos de rendimiento ni idea la verdad :)
Título: Re:C# vs Java: eficiencia de la VM
Publicado por: Manu343726 en 12 de Febrero de 2013, 09:49:04 AM
Hace un tiempo leí este artículo en el que se hace una comparativa entre diferentes lenguajes de programación en el campo de la bioinformatica. http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2267699/

Por los resultados que muestra, parece que C# suele consumir menos memoria que JAVA, pero en líneas generales el rendimiento es equivalente.

Pero sinceramente, cuando programas con cosas tipo Java/C# no tienes en mente el rendimiento. Tienes en mente la productividad. Al fin y al cabo, son plataformas que están diseñadas para RAD. Si necesitas estrujar la máquina, usa C o Cpp.

Y es en productividad donde, a día de hoy, todos estamos de acuerdo que .NET framework destaca sobre Java sin lugar a dudas. Sobre el diseño del lenguaje, estoy totalmente de acuerdo con Gorkinovich. Java esta estancado en un modelo de programación de hace casi veinte años, que no se ajusta para nada a las necesidades actuales.

C# ha evolucionado poco a poco, asustándose a los cambios, y sinceramente pienso que esta diseñado con bastante más cabeza que JAVA.
Título: Re:C# vs Java: eficiencia de la VM
Publicado por: Daemon en 12 de Febrero de 2013, 10:17:42 AM
Me he encontrado esto:

http://benchmarksgame.alioth.debian.org/u32/csharp.php
http://benchmarksgame.alioth.debian.org/u32q/benchmark.php?test=all&lang=csharp&lang2=java

Es difícil sacar conclusiones. Según eso, en rendimiento de tiempo de ejecución quizás las bibliotecas de Java están algo mejor implementadas que las de C#.

Como curiosidad este artículo de Google (el pdf dentro de la página). Me ha sorprendido Scala: http://readwrite.com/2011/06/06/cpp-go-java-scala-performance-benchmark