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

Aldrin Gonzalo Martoq Ahumada amartoq en dcc.uchile.cl
Mie Dic 5 01:06:14 CLST 2007


On Dec 3, 2007 10:59 AM, Xavier Andrade <xavier en tddft.org> wrote:
> On Sun, 2 Dec 2007, Aldrin Gonzalo Martoq Ahumada wrote:
> > Discrepo. Lo que se llama "maquina" es la definicion de una
> > arquitectura y su set de instrucciones. Cuando se habla de "maquina
> > virtual", se quiere decir que ese set de instrucciones no es el mismo
> > que el implementado en hardware; por lo tanto si quieres ejecutar ese
> > set de instrucciones requeriras de un paso de traduccion.
> > Un interprete es un programa que realiza la traduccion desde un set de
> > instrucciones o lenguaje y las ejecuta, de manera que puedas correr el
> > codigo en tu maquina "real". La distincion importante es que el paso
> > de traduccion se hace en tiempo de ejecucion; es decir, cada vez que
> > corras el programa tendras el costo adicional de traduccion lo que
> > puede traer problemas de performance o uso de recursos (memoria por
> > ej). Por eso la *implementacion* de la maquina virtual de java es un
> > interprete.
> El problema es que no es tan claro hacer la distincion, de acuerdo a tu
> definicion, x86(_64) es una maquina virtual, ya los procesadores modernos
> implementan un set de instrucciones a la RISC internamente y en el momento
> de ejecucion se traducen las instrucciones x86 a instrucciones nativas,
> algunas directamente y otras por microcodigo.

Exactamente, ese es el punto: los procesadores x86 modernos poseen un
interprete!

Dicho de otra forma, si pudieramos compilar (traducir "offline")
directamente en el codigo "nativo" del procesador, nos ahorrariamos
varios ciclos de cpu (y tal vez transistores si dejamos esa pega
exclusivamente al ambiente); que se  gastan en el interprete (traducir
"online").


-- 
Aldrin Martoq


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