Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

Franco Catrin L. fcatrin en tuxpan.com
Vie Nov 16 12:51:23 CLST 2007


Rodrigo Fuentealba escribió:
> Tampoco lo tiene mucho Java v/s C ya que C se
> compila directamente a código de máquina, mientras que Java requiere
> que tengas el JRE (Java Runtime Environment).

Si y no.
La máquina virtual de Java igual te va a compilar el código a código de 
máquina y eso es lo que va a ejecutar, se demorará la primera vez pero 
en los casos en donde importa el rendimiento (loops) sólo se hace al 
principio.  El byte-code no es código interpretado, es código de máquina 
para una máquina virtual (oh!).

También puedes compilar Java a código de máquina directamente con GCJ, 
pero eso requiere que también tengas compiladas otras cosas que hasta 
hace poco estaban restringidas por Sun.  No sé cual es el escenario actual.

Hay algunas cosas que funcionan más rápido en Java pero no por un tema 
de compiladores, sino que por otros aspectos como por ejemplo el 
mecanismo de Garbage Collection que funciona de forma asincrona (pero no 
en paralelo).  En el caso de C puro los malloc y los free te pueden 
comer un ciclo.  Otras cosas que influye bastante son las estructuras de 
datos, por ejemplo no es lo mismo un int[] en C que un Vector de Integer 
en Java, y si.. hay programadores que no van a usar el int[] de Java.  
Otro tema es la forma de organizar matrices multidimensionales en C 
respecto a como un programador típico lo hace en Java, aspecto en donde 
C# si se preocupa.

El tema de por qué las aplicaciones en Java funcionan lento tiene varias 
causas, desde complejidad en exeso en el diseño de aplicaciones hasta el 
uso y abuso de conceptos avanzados de  Estupidez Artificial y Lógica 
Confusa ;)

--
Franco


Más información sobre la lista de distribución Linux