Rendimiento C++/C#/Java en Windows y Linux
Junio 22nd, 2005 - [Enlace local]
He leído en el CUJ de Julio (C/C++ Users Journal) un artículo intitulado Micro Benchmarking C++, C#, and Java (sólo pasando por caja), lo que traducido al castellano podría ser algo así como “Pruebas de micro rendimiento para C++/C# y Java”.
El artículo es bastante corto y escueto; el autor indica qué elementos de juicio ha decidido, el hardware y las versiones de las herramientas. Los ensayos consisten en pruebas repetidas con pequeños bloques de código, como operaciones con enteros, en coma flotante, matrices, ordenación, instanciación, excepciones, tablas de dispersión y cosas así.
Este señor ha ejecutado los programas en Linux (Sun java 1.4.2 y 1.5, gcc, intel c, mono) y en Windows XP+SP2 (SUN java 1.4.2, java 5, net 2, net 1.1sp1, ms c++ 7.1). Las versiones java han sido verificadas tanto en el lado cliente como en el servidor.
Personalmente considero que, dado lo delicado del tema, el artículo es todo lo serio que puede ser.
RESULTADOS
En contra de mi opnión personal, y creo que en la de muchos, lo más destacable es la velocidad de Java, comparable a la de C++, tanto en ambas plataformas (excepto en rendimiento con operaciones de enteros del lado cliente, cosa que no entiendo) como en forma cruzada. Tan sólo tarda unos pocos milisegundos más en hacer las cosas. El .NET en general se queda después de Java (salvo excepciones con un rendimiento igual al ms c++ 7.1).
El ganador indiscutible es el GCC bajo Linux, que supera en rendimiento al C++ de Microsoft en casi todo (qué lástima que el autor no haya probado el gcc-win32), y el perdedor indiscutbile es Mono 1.0.6, con el peor rendimiento en casi todo (incluso dos y tres veces más lento que el más lento), seguido del lado cliente de Java, aunque sólo a veces.
TERRA INCOGNITA
Sabemos que Java es lento. No hay mas que instalar Eclipse para darse cuenta de ello. O cualquier otra aplicación grande. En mi experiencia personal es más lento que el .NET, por lo menos la sensación del usuario es esa. Sin embargo, en estos tests de rendimiento, gana. Y no es un problema de consumo de memoria, porque si tienes memoria suficiente (1,5 GB en mi caso), también lo es (me refiero con esto a que no tira de archivo de paginación, por lo que todo el asunto queda entre la RAM, la MMU y el procesador).
¿Dónde está, pues la lentitud en Java?
» Leer más, comentarios, etc...