Seraphinux
“Lloramos por el lamento de un pájaro pero no por la sangre de un pez, benditos aquellos que tienen voz.”
September 5th, 2008
Visitada: 519 veces, 1 en este dia.

Engine JavaScript V8: Tan rapido como C++?

Recuerdo que hace unos dias me quejaba de lo lento que podrian ser algunas Web App que usan de manera intensiva JavaScript y por ende algo de AJAX. Pues bien estoy casi apunto de tragarme mis palabras… ¿Por que?

Recuerdan que cierta empresa lanzo cierto buscador el cual usaba cierta engine (usare el termino Engien y Motor indistintamente) JavaScript… pues bien hace poco lei un articulo que analizaba esta engine, y creanme que me dejo helado… De lo que estoy hablando es del Google y su ya popular navegador Chrome, el cual usa la engine V8 para el “procesado” de JavaScript. Antes de pasar al articulo al cual hago referencia hagamos un poco de contexto.

Segun Google Code

  • … es una motor JavaScript bajo licencia OpenSource desarrollado por Google.
  • … esta escrito en C++ y es usado en Google Chrome (Navegador Web bajo licencia OpenSource desarrollado por Google).
  • … implementa ECMAScript una especificacion del ECMA-262 3ra edicion, y corre sobre Windows XP, Vista, Mac OS X 10.5 y Sistemas Linux que usen procesadores IA-32 o ARM
  • … puede correr de manera standalone (algo asi como solito) o embebido en aplicaciones C++ (esta parte me hace imaginar tantas cosas)

Segun Wikipedia

  • … es una engine JavaScript bajo licencia OpenSource desarrollada por Google en Dinamarca e incluida en el navegador Google Chrome.
  • … logra una gran rendimiento ya que compila el codigo JavaScript en codigo maquina nativo (IA-32, ARM) en lugar de generar un ByteCode. De esta manera las aplicaciones JavaScript se ejecutan a la velocidad de un binario.

Bueno ya sabemos que es V8, los punto mas descatables son:

  • … esta escrito en C++ y es usado en Google Chrome (Navegador Web bajo licencia OpenSource desarrollado por Google).
  • … puede correr de manera standalone (algo asi como solito) o embebido en aplicaciones C++ (esta parte me hace imaginar tantas cosas)
  • … logra una gran rendimiento ya que compila el codigo JavaScript en codigo maquina nativo (IA-32, ARM) en lugar de generar un ByteCode. De esta manera las aplicaciones JavaScript se ejecutan a la velocidad de un binario.

¿Que por que es descatable? Imaginen las posibilidades… A LA VELOCIDAD DE UN BINARIO…. y COMPILADO EN C++; bueno bueno, ahora pasemos al articulo que les comentaba. Este articulo lo puedes encontrar en V8 under the hood, como bien podras darte cuenta esta en ingles, pero “no problem” las siguientes son mis pseudotraducciones de los puntos mas descatables:

… no es realmente una “clasica” VM [Virtual Machine]. No usa una representacion intermedia o un codigo de alto nivel que sea posible programar a nivel de la VM. Lo unico que entiende V8 es JavaScript y su unico objetivo es la representacion en ensamblador nativo (Intel y ARM por ahora. Por lo tanto en algunos aspectos se hacerca mas a un compilador que a la tradicional VM…

… tambien es mas que un simple compilador. Incluye un ¿generacional? (Nota: en el original es generational, pero no logro intuir a que se refiere), precisa recolector de basura, ademas de que el ensamblador generado es repasado en tiempo de ejecucion dependiendo del camino que tome el programa. Que llamen a clases ocultas permite la generalizacion de algunas llamadas lo cual permite optimizar mas…

… V8 no es como la JVM o Mono, donde es posible generar bytecode intermedio, solamente es de Javascript hacia ensamblador. Lo cual hace la compilación cruzada a Javascript una opción interesante. En teoría y con las optimizaciones suficiente, esto podría ser tan rápido como C por lo menos en algunos puntos…

En verdad que V8 es sorprendente, la gente de Mozilla dice que su engine llamado TraceMonkey sera todavia mas rapida que V8; viendo las cosas con esta perspectiva, las aplicaciones que hacen uso intensivo de JavaScript se veran altamente beneficiadas, ni que hablar de AJAX.

Nota: Ya saben, los anteriores punto fueron mis pseudotraducciones el articulo original lo pueden consultar ustedes mismos y si encuentran algun error en mi PT me dicen para modificarla.

Posts Relacionados

Dejanos un comentario.