Desde hace unos meses, la presión que se está aplicando al mundo de los lenguajes interpretados no deja de aumentar. Con un crecimiento importante de todos ellos (y en especial, Ruby, Python o Javascript) y con un número de programadores que llegan desde lenguajes compilados (C++) o semi-compilados (Java), se intenta que mejore el rendimiento de los lenguajes y que se amplien sus características para que los recién llegados se encuentren a gusto.
Aplicar las tecnologías de compilación a los lenguajes interpretados no sólo es posible sino que además están apareciendo una serie de artículos en el sector que muestran que las ventajas históricas que se creía exclusivas de los lenguajes compilados también pueden aplicarse a los interpretados. En esa línea, Brendan Eich, uno de los artífices de Javascript, anuncia que para la próxima versión de Firefox (3.1) se intentará tener terminado lo que ellos llaman TraceMonkey: una serie de optimizaciones en el intérprete que consiguen mejoras de hasta un 2200% en determinados casos. Las optimizaciones aprovecharán, entre otras, las siguientes técnicas:
- desplegado de funciones en línea (repetir el código de la función a llamar en el punto de llamada de forma que se evitan saltos y la función se ejecuta como si fuese parte del código).
- inferencia de tipos para optimizar el funcionamiento de los operadores (p.ej. cuando se sabe que las variables a sumar con + son cadenas, realizar una concatenación directa sin intentar deducir los tipos).
- optimización general de los bucles reduciendo las instrucciones ejecutadas a cada paso.
0 comentarios:
Publicar un comentario