TraceMonkey

complexity

Como ya publicamos aquí hace un tiempo, una de las características de la nueva versión de Firefox, es el uso de un nuevo motor llamado TraceMonkey, el cual, acelera bastante la ejecución de código JavaScript. Pues bien, en el Blog de Mozilla Hacks, han publicado un artículo de como funciona este nuevo motor, como mejora el rendimiento y da algunas pistas de como optimizar nuestro código JavaScript para que corra más rápido sobre el mismo.

Básicamente, este nuevo motor hace una pre-evaluación de nuestro código, ejecutándolo internamente con el objetivo principal de determinar los tipos de datos de las variables usadas. Como muchos de vosotros sabrán, JavaScript es un lenguaje no tipado, como lo es Java o C. Por lo tanto cuando el motor de JavaScript empieza a ejecutar código, tiene que ir decidiendo en tiempo real que tipo de datos son las variables que se están usando en ese momento, así como la operación. Por ejemplo, a+b, dependiendo del tipo de dato de a y b, la operación puede resultar en una suma matemática o una concatenación. A su vez, la suma metemática, puede ser de enteros o dobles. A groso modo, esa es la forma en la que TraceMonkey acelera la ejecución. Otra de las cosas que se comenta en el artículo, es que el uso de objectos y la operaciones de bifurcación, es lo que más le cuesta a TraceMonkey de digerir.

Si quieres leer de una forma mejor explicada la forma de trabajo de este motor, nada como ir al artículo original.