EFICIENCIA ENERGÉTICA EN LOS LENGUAJES DE PROGRAMACIÓN
Enviado por charles27 • 17 de Febrero de 2019 • Documentos de Investigación • 7.613 Palabras (31 Páginas) • 169 Visitas
EFICIENCIA ENERGÉTICA EN LOS LENGUAJES DE PROGRAMACIÓN
¿CÓMO SE RELACIONAN LA ENERGÍA, EL TIEMPO Y LA MEMORIA?
Resumen
Este artículo presenta un estudio del tiempo de ejecución, el uso de memoria y el consumo de energía de veintisiete idiomas de software conocidos.
Supervisamos el rendimiento de dichos lenguajes utilizando diez problemas de programación diferentes, expresados en cada uno de los lenguajes. Nuestros resultados muestran hallazgos interesantes, como, por ejemplo, lenguajes más lentos / rápidos que consumen menos / más energía y cómo el uso de la memoria influye en el consumo de energía. Mostramos cómo usar nuestros resultados para proporcionar soporte a los ingenieros de software para decidir qué idioma usar cuando la eficiencia energética es una preocupación.
Introducción
La ingeniería lingüística del software proporciona poderosas técnicas y herramientas para diseñar, implementar y evolucionar lenguajes de software. Estas técnicas apuntan a mejorar la productividad de los programadores, incorporando características avanzadas en el diseño del lenguaje, como por ejemplo poderosos sistemas modulares y de tipo, y ejecutar dicho software de manera eficiente, desarrollando, por ejemplo, optimizaciones agresivas del compilador. De hecho, la mayoría de las técnicas se desarrollaron con el objetivo principal de ayudar a los desarrolladores de software a producir programas más rápidos.
De hecho, en el siglo pasado, el rendimiento en los lenguajes de software fue en casi todos los casos sinónimo de tiempo de ejecución rápido (los sistemas integrados probablemente fueron la única excepción). En este siglo, esta realidad está cambiando rápidamente y el consumo de energía del software se está convirtiendo en una preocupación clave para los fabricantes de computadoras, los ingenieros de lenguajes de software, los programadores e incluso los usuarios regulares de computadoras. Hoy en día, es habitual ver a los usuarios de teléfonos móviles (que son computadoras potentes) que evitan el uso de aplicaciones con un uso intensivo de la CPU para ahorrar batería / energía. Si bien la preocupación sobre la eficiencia energética de las computadoras comenzó por los fabricantes de hardware, también se convirtió rápidamente en una preocupación para los desarrolladores de software. De hecho, esta es un área de investigación reciente e intensiva donde se están desarrollando varias técnicas para analizar y optimizar el consumo de energía de los sistemas de software. Estas técnicas ya proporcionan conocimientos sobre la eficiencia energética de las estructuras de datos [14, 26] y el lenguaje Android, el impacto energético de las diferentes prácticas de programación tanto en aplicaciones móviles [17, 21, 30] como en aplicaciones de escritorio [25, 31], la eficiencia energética de aplicaciones dentro del mismo ámbito [2, 16], o incluso sobre cómo predecir el consumo de energía en varios sistemas de software [4, 13], entre varios otros trabajos.
Una pregunta interesante que surge frecuentemente en el área de eficiencia energética del software es si un programa más rápido también es un programa de eficiencia energética, o no. Si la respuesta es sí, entonces optimizar un programa para la velocidad también significa optimizarlo para obtener energía, y esto es exactamente lo que la comunidad de compiladores no ha hecho desde el principio de los lenguajes de software. Sin embargo, el consumo de energía no depende solo del tiempo de ejecución, como se muestra en la ecuación Enerjy = Time × Power. De hecho, hay varios trabajos de investigación que muestran diferentes resultados con respecto a este tema [1, 20, 26, 28, 34, 37]. Cuando se comparan lenguajes de software, surge una pregunta similar: ¿es un lenguaje más rápido, más ecológico? Sin embargo, comparar los lenguajes de software es una tarea extremadamente compleja, ya que el rendimiento de un lenguaje está influenciado por la calidad de su compilador, máquina virtual, recolector de basura, bibliotecas disponibles, etc. De hecho, un programa de software puede volverse más rápido al mejorar su código fuente, pero también al "simplemente" optimizar sus bibliotecas y / o su compilador. En este artículo analizamos el rendimiento de veintisiete idiomas de software. Consideramos diez problemas de programación diferentes que se expresan en cada uno de los lenguajes, siguiendo exactamente el mismo algoritmo, tal como se define en el Juego de referencia de lenguaje computacional (CLBG). Compilamos / ejecutamos dichos programas utilizando los compiladores, máquinas virtuales, intérpretes y bibliotecas de vanguardia para cada uno de los 27 idiomas. Posteriormente, analizamos el rendimiento de las diferentes implementaciones considerando tres variables: tiempo de ejecución, consumo de memoria y consumo de energía. Además, analizamos esos resultados según el tipo de ejecución de los lenguajes (compilado, máquina virtual e interpretado), y el paradigma de programación (imperativo, funcional, orientado a objetos, scripting) utilizado. Para cada uno de los tipos de ejecución y paradigmas de programación, compilamos una clasificación de lenguaje de software de acuerdo con cada variable considerada. Nuestros resultados muestran hallazgos interesantes, como lenguajes de software más lentos / más rápidos que consumen menos / más energía, y cómo el uso de la memoria influye en el consumo de energía. Además, discutimos cómo usar dichos resultados para proporcionar soporte a los ingenieros de software para decidir qué idioma usar cuando la eficiencia energética es una preocupación.
Este trabajo se basa en trabajos anteriores donde se presentó un marco para permitir el monitoreo del consumo de energía de los programas de software ejecutables. En ese trabajo, el marco basado en C se usó para definir una clasificación preliminar de diez idiomas (donde solo se consideró la energía). Reutilizamos el marco de monitoreo de energía (descrito brevemente en la Sección 2.2) para analizar la eficiencia energética de 27 idiomas y (casi) 270 programas. También lo hemos ampliado para controlar el consumo de memoria.
Este documento está organizado de la siguiente manera: la Sección 2 expone los pasos detallados de nuestra metodología para medir y comparar la eficiencia energética en los lenguajes de software, seguida de una presentación de los resultados. La sección 3 contiene el análisis y la discusión sobre los resultados obtenidos, donde primero analizamos si el rendimiento del tiempo de ejecución implica eficiencia energética, luego examinamos la relación entre el uso máximo de memoria y el consumo de energía de la memoria, y finalmente presentamos una discusión sobre cómo la energía, el tiempo y Memoria relacionada en los 27 idiomas del software. En la Sección 4 discutimos las amenazas a la validez de nuestro estudio. La Sección 5 presenta el trabajo relacionado y, finalmente, en la Sección 6 presentamos las conclusiones de nuestro trabajo.
...