martes, 12 de octubre de 2010

Características del motor de JavaScript de IE9.

Uno de los grandes cambios de IE9 es el motor de JavaScript el cual soporta multinúcleo. Tan pronto como se carga una página Web, Chakra asigna un núcleo de procesamiento a la tarea de compilación de JavaScript en segundo plano dentro del cual es escrito en el idioma nativo del procesador del equipo. Con Chakra los desarrolladores no tendrán cambiar su forma de trabajar en las páginas WEB, Hoy en día si un equipo contiene más de un núcleo, se podrá aprovechar dicha característica para conseguir una mejor velocidad en el acceso a las páginas web.

A continuación presento a ustedes los modelos de integración que MS usó tanto para IE8 con JavaScript, así como la Integración de IE9 con JavaScript 9.0 “Chakra”.

clip_image002

clip_image004

A diferencia de la competencia Microsoft considera que el intérprete de JavaScript siempre debe estar presente. Sin embargo, el intérprete toma directamente la ejecución de código JavaScript, mientras que el compilador de JavaScript trabaja en segundo plano. Aquí, el compilador utiliza el poder de modernos procesadores con múltiples núcleos, y la Aceleración de hardware es sólo una forma de darle más velocidad de navegación.

Los navegadores de hoy en día necesitan ofrecer mayor rendimiento, debido a que las diferentes páginas web varían en su complejidad, desde lo sencillo a lo complejo. Para ejecutar una página WEB, el motor de script debe tener:

· Gran receptividad en la carga de las páginas web con el script. En pruebas realizadas en diferentes sitios, se encontró que las aplicaciones usan entre un 10% y 30% de carga de la página en tiempo de ejecución del script. La compilación y optimización de código no siempre es efectiva, porque el tiempo necesario para ello puede compensar con los ahorro de la ejecución de código.

· Capacidad de Respuesta a las aplicaciones modernas de WEB. Sitios como Yahoo! Mail, Gmail y algunos de Internet Explores se comportan como aplicaciones web estáticas, y pueden gastar entre un 30% y 90% de tiempo realizando operaciones de Script.

· Una experiencia optimizada en plataformas multinucleo para PC, portátiles y dispositivos móviles. El código de usuario en aplicaciones HTML y JavaScript en su mayoría trabaja en un único proceso, pero hoy en día los equipos informáticos poseen multiprocesadores, los navegadores deben buscar la forma de trabajar de manera óptima con más de un núcleo, para así mejorar el desempeño. A su vez lo navegadores debe trabajar de manera óptima en los portátiles para disminuir el consumo de energía.

En resumen un motor debe ser capaz de adaptarse fácilmente a los cambios en las aplicaciones, a los patrones usados en la Web, y a los cambios en el hardware utilizado para visualiza la Web.

Características del Motor JavaScript IE9[1].

A continuación revisaremos algunas de las características que posee el motor JavaScript en IE9.
Compilación en Segundo plano de JavaScript: Hoy en día, muchos motores de Script empiezan con un intérprete optimizado, compilan en secciones o métodos individuales en código de la máquina para ejecutarse con mayor rapidez.
Otros compilan siempre JavaScript en código máquina antes de ejecutarlo, a menudo es compilado cada método si se considera necesario. Cualquiera de estos enfoques tienen que sacrificar la calidad o la cantidad de código compilado contra la velocidad de ejecución. Generar código de alta calidad para las aplicaciones actuales, requiere tiempo para optimizar el código compilado.

IE9 incluye un intérprete rápido para ejecutar que el inicio de la carga de una página sea rápido. Para la compilación, se tiene un generador de código en segundo plano que compila el código de Script y, luego continuación, envía los métodos compilados a la aplicación. Debido a que el generador de código que se ejecuta en segundo plano, se puede aprovechar las equipos con múltiples núcleos y generar código de mayor calidad, mientras que no se bloquea la ejecución inicial de la aplicación.

Tipos de Optimizaciones: Es Uno de los aspectos más importantes que permite un rendimiento en JavaScript para crear de manera eficiente tipos del sistema. El motor de Script de IE9 utiliza muchas de las técnicas comunes en las implementaciones modernas de lenguajes dinámicos, incluyendo la representación de tipo polimórfico almacenamiento en caché (también llamado evolución de tipo o clases ocultas) y la eficiente implementación de tipos de máquinas.

Intérprete Rápida: Para páginas donde la ejecución inmediata en el intérprete es importante, IE9 incluye un nuevo intérprete que utiliza un diseño basado en el registro, la operación eficiente y el uso de las optimizaciones de tipo.

Optimización de las bibliotecas: El rendimiento de las aplicaciones y páginas de JavaScript depende en gran medida los aspectos clave de los script de las bibliotecas en tiempo de ejecución tales como: cadenas, matrices, objetos y expresiones regulares.

Estas librerías requieren ajuste cuidadoso para la Web real, por ejemplo en la ejecución de las expresiones regulares. Hoy en día, la mayoría de los motores de script usan técnicas de compilación y optimización para correr más rápido de las expresiones regulares, y IE9 incluye una implementación mejorada de expresiones regulares. En el análisis de sitios Web de mundo real, nos encontramos con un conjunto de patrones utilizados con frecuencia, pero también encontramos casos únicos – por ejemplo, un sitio que crea cientos de expresiones regulares y utiliza muy pocos de ellos – seguiremos utilizando estos datos para optimizar nuestra implementación de expresiones regulares y otras características de la biblioteca para IE9.

Evaluación comparativa de gráficos y tradicional rendimiento de JavaScript.

En cualquier discusión sobre el rendimiento del motor de JavaScript, una dimensión siempre viene primero: la de la velocidad de ejecución pura. ¿Con qué rapidez un motor llega del punto A al punto B en un programa de JavaScript? Un número de puntos de referencia conocidos ha intentado representar la velocidad de ejecución de JavaScript de diferentes maneras.

WebKit de SunSpider, intenta medir la ejecución pura del Motor JavaScript. WebKit SunSpider realiza tareas tales como manipulación de cadenas y operaciones matemáticas. Estas pruebas no son solamente para verificar la capacidad de ejecución del motor para código de usuario, también el rendimiento de las librerías en tiempo de ejecución como expresiones regulares y arreglos de discos. Otros puntos de referencia Dromaeo medir un conjunto más amplio de escenarios, como patrones de lenguaje JavaScript comunes, tales como cierres y la interacción con el HTML DOM.

Los navegadores han hecho sus intérpretes más rápido y han añadido diversas formas de generación de código, mejorando sus calificaciones en estos puntos. Con el tiempo, la brecha relativa entre los navegadores se ha reducido significativamente. En el trabajo que se ha realizado para el preview de IE9, se ha mejorado sustancialmente el rendimiento con respeto a IE8.

En la siguiente grafica se podrá visualizar el comportamiento de cada uno de los navegadores con JavaScript.

clip_image006

El constante aumento de rendimiento de JavaScript en navegadores conduce a una pregunta obvia: que tan rápido puede ser JavaScript en el explorador ?

Sabemos de las mediciones en el espacio de lenguajes de programación que JavaScript todavía está limitado en la rendimiento de ejecución en comparación con C++ o idiomas estáticamente con tipados.

Pero la compilación de código, la inferencia de tipo dinámico y otras innovaciones han habilitado JavaScript cerrar esa brecha considerablemente.

Mientras trabajamos en IE9, seguiremos mejorar todos los aspectos de rendimiento de secuencia de comandos: ajustar nuestro compilador, tipo de sistema, bibliotecas y otros aspectos de tiempo de ejecución como la administración de memoria e interoperabilidad de DOM.

También vamos a trabajar en otras dimensiones de rendimiento, tales como la memoria de uso y consumo de energía. Los motores de secuencias de comandos de mañana serán juzgados por lo bien que ajustan su rendimiento a través de todas estas dimensiones, a través de toda la Web.

También necesitaremos el lenguaje JavaScript y tiempo de ejecución evolucionando para satisfacer las crecientes necesidades de los desarrolladores y usuarios. Es por eso también estamos trabajando con otros implementadores de motor de JavaScript en el Comité ECMA script evolucionar JavaScript de manera responsable, lo que mantiene la compatibilidad con la Web de hoy y satisface las necesidades de las aplicaciones de HTML5 de mañana.


[1] http://blogs.msdn.com/b/ie/archive/2010/03/18/the-new-javascript-engine-in-internet-explorer-9.aspx

No hay comentarios:

Publicar un comentario