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