Ayuda
Ir al contenido

Dialnet


Resumen de Co-designed solutions for overhead removal in dynamically typed languages

Gem Dot Artigas

  • Los lenguajes dinámicamente tipificados están muy presentes en las aplicaciones de hoy en día. Aunque estos lenguajes facilitan las tareas de programación, también sufren de importantes costes adicionales en la ejecución del programa. Esto es debido a que los tipos de las variables no son declarados en el programa y a que dichas variables pueden contener elementos de más de un tipo distinto durante la misma ejecución. Consecuentemente el tipo de las variables debe ser evaluado en tiempo de ejecución.

    Para intentar minimizar estos costes adicionales, se emplean técnicas de especialización de código a partir de información dinámica de tipos. Sin embargo este código especializado requiere validar estos tipos constantemente para cada vez que se produce un acceso a una variable. Aunque los costes adicionales de estos lenguajes son reducidos notablemente con estas técnicas de especialización de código, éstos siguen teniendo un factor importante en la ejecución, de modo que el rendimiento de estas aplicaciones sigue siendo considerablemente menor en comparación con los lenguajes estáticamente tipificados. Por otra parte, estos costes adicionales adoptan una forma distinta según el tipo de aplicación que se ejecute. Esta tesis propone tres mecanismos co-diseñados en SW y en HW que permiten reducir estos costes adicionales para los dos tipos de aplicaciones más comunes en los lenguajes dinámicamente tipificados.

    Dos de las técnicas propuestas reducen los costes adicionales para un tipo de aplicaciones regulares, de larga duración y con un alto reúso de código. Este tipo de aplicaciones ejecutan código especializado durante una parte muy importante del tiempo, lo que les permite alcanzar un rendimiento bastante más próximo al alcanzado por las aplicaciones escritas en lenguajes estáticamente tipificados. Los costes adicionales de este código especializado consisten básicamente en las verificaciones en tiempo de ejecución de los tipos de las variables cuando éstas son accedidas. Teniendo en cuenta estos costes, la primera técnica propuesta reduce el número de instrucciones y latencias ejecutadas para realizar estas operaciones de verificación de tipo de las variables. Por otro lado, la segunda técnica está basado en un mecanismo dinámico que permite recolectar información de tipos de forma eficiente, con el fin de eliminar de la ejecución un subconjunto de estas operaciones de verificación de tipo.

    La tercera técnica propuesta reduce los costes adicionales para aplicaciones de corta duración y con un bajo reúso de código, las cuales están más relacionadas con la gestión rápida de eventos en un entorno web. Este tipo de aplicaciones ejecutan un porcentaje menor de código especializado respeto a las primeras, de modo que el tipo de costes adicionales más predominante consiste en las tareas de desambiguación del tipo de las variables cuando éstas son accedidas. Teniendo en cuenta esto, nosotros hemos propuesta un mecanismo HW/SW híbrido que permite eliminar por completo la mayor parte de estas tareas para el caso de los accesos en modo lectura de los métodos o atributos de un objeto. Este es un esquema novedoso que mejora significativamente la técnica del estado del arte de los lenguajes dinámicamente tipificados.


Fundación Dialnet

Dialnet Plus

  • Más información sobre Dialnet Plus