Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Ver: Modo: Orden:
Compilando código Java | 15 comentarios (15 temáticos, editoriales, 0 ocultos)
Resultados más completos (5.00 / 1) (#1)
por man ls a las Tue May 11th, 2004 at 01:37:02 AM CET
(Información Usuario)

Para daros una visión más general del asunto, he hecho una comparativa un poco más a fondo entre la máquina virtual de Sun y el código compilado por gcj. Lo pongo en un comentario, para no distraer de la historia principal.

La primera comparativa es la "null": ejecuta los métodos de prueba pero sin nada dentro. Luego se sustrae a cada prueba el tiempo de esta primera. Todos los tiempos en segundos. Se miden siempre 1000000000 (10^9) iteraciones, excepto en append string donde sólo se realizan 200000 (2*10^5) (porque iba lentísimo en ambos).

El código de Sun se ejecuta así:
$ java -classpath "bin" Benchmarker
y el de gcj:
$ gcj -O5 --main=Benchmarker src/*.java -o benchmark
$ benchmark
results for null benchmark
java        gcj
0.812       1.527

results for add int benchmark
java        gcj
2.66        0.082

results for add float benchmark
java        gcj
3.703       0.981

results for add double benchmark
java        gcj
2.649       0.985

results for method call benchmark
java        gcj
2.818       0.081

results for create object benchmark
java        gcj
3.081       10.02

results for append string benchmark, 1/5000
java        gcj
4.003       9.583


Mi impresión general es que gcj se porta de maravilla con las operaciones aritméticas y las llamadas a métodos. Sin embargo, la creación de objetos -- y, sobre todo, la recolección automática -- le cuesta más. En general, es bastante impresionante, considerando los años y el esfuerzo que ha dedicado Sun a optimizar tanto el intérprete como el compilador HotSpot.

Máquina de prueba: PIV a 2.4 GHz, 512 MB de RAM, Mandrake 9.2, disco duro a manta. JDK 1.4.2 (HotSpot), gcj 3.3.2. Suministro el código de prueba a cambio de un foskito.



Preguntador-P-Pregunta (none / 0) (#10)
por jcantero (jcantero@agujero-negro.escomposlinux.org) a las Wed May 12th, 2004 at 09:05:47 AM CET
(Información Usuario) http://www.escomposlinux.org/jcantero/

Sin embargo, la creación de objetos -- y, sobre todo, la recolección automática -- le cuesta más.
Hmmmm, por curiosidad, ¿has forzado la recolección de basura en las pruebas?

--
"Papá, ¡Internet es más que una red pornográfica global!" -- Lisa Simpson
[ Padre ]


No, no he llamado al recolector (none / 0) (#11)
por man ls a las Wed May 12th, 2004 at 01:29:03 PM CET
(Información Usuario)

Te refieres a la llamada System.gc(), ¿no? Lo malo es que sólo es un hint a la máquina virtual: puede pasar de ti, o puede darle por recoger objetos. No sé cómo se portará en el gcj.

También he visto una opción curiosa: usar el famoso recolector de Boehm, que ya me he encontrado mencionado en varios sitios. Debe ser la caña, y tiene que ser interesante compararlo con el que viene por defecto. Me lo apunto: forzar la recolección, y probar con el nuevo recolector de Boehm.

[ Padre ]


Sí, System.gc() (none / 0) (#14)
por jcantero (jcantero@agujero-negro.escomposlinux.org) a las Fri May 14th, 2004 at 09:51:53 AM CET
(Información Usuario) http://www.escomposlinux.org/jcantero/

Ségun el libro de Bruce Eckel(*):
Si se invoca a System.gc() se finalizan todos los objetos. Esto no era necesario en el caso de las implementaciones previas de del JDK, aunque la documentación decía otra cosa.
(*) Lo he sacado de la edición en castellano (Piensa en Java), que corresponde con la 2ª edición en inglés. En ella se refiere principalmente a JDK 1.2 y 1.3.

--
"Papá, ¡Internet es más que una red pornográfica global!" -- Lisa Simpson
[ Padre ]


Ya lo he probado (none / 0) (#15)
por man ls a las Sat May 15th, 2004 at 05:48:45 PM CET
(Información Usuario)

Y no hay diferencia apreciable, entre crear n objetos y crear n objetos + llamar al recolector.

Tampoco hay diferencia apreciable usando el recolector de Boehm:
gcj [...] -fuse-boehm-gc
Vamos, que el tiempo de recolección no afecta mucho.

[ Padre ]


 

Compilando código Java | 15 comentarios (15 temáticos, editoriales, 0 ocultos)
Ver: Modo: Orden:
Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda