OT: google-chrome navegador opensource..

Daniel Serpell dserpell en gmail.com
Jue Sep 4 19:21:34 CLT 2008


Hola!

El Thu, Sep 04, 2008 at 04:13:04PM +0200, Miguel Oyarzo O. escribio:
> At 20:27 04/09/2008, Alvaro Herrera wrote:
[...]
>> No es que v8 sea multithread (y
>> aunque lo fuera, sería irrelevante), sino que cada tab procesa
>> Javascript por separado.
>
> V8 es multi-thread, aun que no lo creas, y para nada
> es irrelevante, es el 1er browser masivo con capacidad
> de formar varios hilos de ejecusion de un codigo javascript,
> y ademas correrlo reiteradamente en codigo de maquina.
>

¿dónde viste que V8 es multi-hebras?

Pues no, no lo es. V8 es un interprete de Javascript rápido, que
utiliza varias técnicas avanzadas para mejorar la velocidad de
ejecución y disminuir el uso de memoria.

Internamente, usa hebras para el garbage-collector y para administrar el
rendimiento, pero no para la ejecución del código Javascript, este se
ejecuta en una sóla hebra.

Y esto no puede cambiarse, ya que Javascript es un lenguaje que tiene
objetos globales visibles, que no se pueden alterar desde distintas
hebras al mismo tiempo. El código Javascript asume acceso esclusivo
a los objetos globales.

Lo que si se puede hacer en en V8 es ejecutar distintos contextos de
Javascript simultáneamente, pero en realidad no está diseñado con ese uso
en mente.

El browser de google ejecuta cada página web (dentro de lo posible) en
un proceso independiente, cada proceso luego tiene su própio VM de
Javascript que se ejecuta de manera independiente.

---------

Por otra parte, he estado jugando un poco con V8, comparandolo con
Spidermonkey y Tracemonkey. Se ve interesante, sobre todo muy simple
de incrustar en aplicaciones propias.

Con respecto a la velocidad, mis resultados (medidos con SunSpider)
son los siguientes (Ubuntu 8.04.1, Core2Duo T5670):

 Maquina Virtual     T(ms)  Mem (GC auto)  Mem (GC manual)
 ---------------------------------------------------------
 Spidermonkey        5998      1444k           340k
 Tracemonkey         2896      1120k           212k
 Tracemonkey JIT     1754       664k           292k
 V8                  1538       308k            -(*)

[(*) no vi como forzar el GC manualmente en V8.]

Se nota que el GC de V8 es mucho más eficiente que el de Tracemonkey,
pero también se nota que Tracemonkey es una mejora significativa del
original Spidermonkey (incluido en Firefox 3.0), sobre todo al activar
el JIT.

Estas pruebas son utilizando los interpretes de linea de comandos,
compilados por mi. La memoria reportada es tamaño de segmento residente,
no memoria virtual.

    Daniel.



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