Ingresar:

Pablo Azero :: Blog :: Entendiendo la ejecución de programas Java

August 22, 2007

No siempre tenemos la imagen completa de los elementos que afectan la performance de un programa, sobre todo de los programas en arquitecturas y lenguajes de programación modernos donde parece que vamos perdiendo el control de todos los elementos que participan. En este artículo encontramos algunos detalles que nos hacen caer en cuenta de estos elementos: manejo de memoria manual vs automático, optimizaciones debido al manejo de punteros, jerarquías de memoria (la importancia de aprovechar las memorias locales más rápidas), el costo de ejecución de un lenguaje con compilación JIT, etc. Yo, por lo menos, me he sentido más informado luego de leerlo.

Palabras clave: C, java, JIT, manejo automático de memoria, memoria cache, performance, punteros

Enviado por Pablo Azero



Comentarios

  1. Realmente uno sale más informado.

    La percepción mítica de GC hace más lenta la performance de un programa Java no es real. En el pasado he defendido que la evolución del hardware iba a reducir la brecha de rendimiento en tiempos de ejecución entre C y Java, ahora puedo decir que no solamente esto reduce la brecha sino existe una tecnología de sowtare que aprovecha mejor el hardware (JIT, algoritmo GC... etc).

     

     

    user iconVladimir Costas on Thursday, 23 August 2007, 09:03 BOT # |

  2. Pues si, muy bueno el articulo, uno aprende cosas, detalles importantisimos sobre la idea "Java es lento". Pues como dice el Lic Costas y como dice el articulo "En teoria JAVA es o deberia ser mas rapido", sin embargo para muchos este mito de la lentitud de JAVA se mantiene, creo que también será bueno que se tengan mejoras en la evolución del hardware, pero es importante mencionar la manera en la que se aprovecha el hardware disponible. Además algo importante que puedo resaltar es la seguridad, la portabilidad de JAVA, quizás este también sea un factor que afecte a la velocidad de ejcución de un programa en JAVA. Pero después de leer el artículo, uno queda muy bien informado :)

    user iconWilfredo Vargas Almendras on Thursday, 23 August 2007, 09:22 BOT # |

  3. También al final del artículo se dice que el mito persistirá ... sino uno se quedaría sin misterios en la vida y la vida de Java tal vez no sería interesante :-) Me gustaría aprovechar la oportunidad para pedir a los programadores de Java que se interesen por este tema a publicar experimentos que demuestren fehacientemente la invalidez del mito.

    user iconPablo Azero on Thursday, 23 August 2007, 09:36 BOT # |

  4. Java es lento Wink para el usuario común y corriente en desktop.

    La principal razón es el I/O, la gente confunde la "lentitud" de un programa por la memoria o el procesador, cuando en realidad la mayor causa es I/O.

    Claro que luego de cargar la aplicación y bibliotecas a memoria, la velocidad en ciertas condiciones puede ser igual o superior a C++. Puede ver los comentarios en barrapunto sobre el mismo artículo.

    Pero, la comparación es GCC vs Java (sun). Por que el compilador -los binarios compilados- de intel para c/c++ (icc) es más rápido que gcc -en arq. intel por supuesto-. 

    user iconRho on Thursday, 23 August 2007, 10:28 BOT # |

  5. La lentitud que supuestamente  se atribuye al tiempo inicial de ejecución de un programa Java no es por la E/S es porque tiene que cargar el ambiente de ejecución.

    user iconPablo Azero on Thursday, 23 August 2007, 23:56 BOT # |

  6. Estoy leyendo los comentarios de barrapunto ... espero que esta muestra no sea significativa. Pienso que el mundo puede ser muy constructivo. Hay que leer a Joel y Clay ...

    user iconPablo Azero on Friday, 24 August 2007, 00:15 BOT # |

Debes iniciar sesión para enviar un comentario.