Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=ca906269-19a0-4952-8356-ca75110924c5

El consumo energético de los lenguajes de programación

¿Te habías planteado alguna vez que el lenguaje de programación que escoges para tus aplicaciones tiene un impacto directo en la energía que consumes? Pues lo tiene, y mucho...

En la actualidad los ordenadores son tan potentes que, quitando aplicaciones especializadas, lo que más preocupa a los usuarios es que los programas no se "cepillen" las baterías de sus portátiles y móviles en unos minutos. Y si no fíjate en las críticas que tiene el navegador Chrome por este motivo, o la manera escandalosa de acabar con la batería que tiene Pokemon Go. Por supuesto, más allá del consumidor, el consumo energético en los centros de datos es una cuestión de suma importancia económica. Empresas como Google, Facebook, Microsoft o Amazon gastan miles de millones de dólares en electricidad, por eso mueven sus Data Centers a sitios fríos con acceso a electricidad barata.

Un equipo de investigadores portugueses se planteó hace unos meses averiguar qué papel juega el lenguaje de programación utilizado en la eficiencia energética de una aplicación. La pregunta no es nada sencilla de contestar porque influyen multitud de cuestiones. Por ejemplo, ¿cómo lo mides? Que un lenguaje sea más rápido, ¿implica necesariamente que sea más eficiente energéticamente? Y un mismo lenguaje que use distintos compiladores ¿cuál es la influencia del compilador? ¿Y los que usan una máquina virtual con compilación JIT como C# o Java? ¿En qué medida influye lo optimizadas que estén las bibliotecas de base que se utilicen?. Como ves nada sencillo.

Los investigadores de la Universidade do Minho, en Braga (por cierto, a tan solo 100 Km de donde se encuentra la sede central de campusMVP) estudiaron los 27 lenguajes de programación más populares para tratar de ver la relación que existe entre su velocidad y su eficiencia energética. Para ello utilizaron el conocido Computer Language Benchmarks Game, de Debian, compilando y ejecutando los programas del benchmark empleando los últimos y más modernos compiladores, bibliotecas y máquinas virtuales del lenguaje (cuando procede). Analizaron las variables de ejecución: tiempo de ejecución, consumo de memoria y consumo de energía.

Vemos aquí la tabla de resultados resumen del final del artículo:

Los resultados en cierta manera confirman algo que intuitivamente quizá ya sabríamos: los lenguajes compilados a código nativo como C, C++ o Ada son los más eficientes energéticamente, aunque no necesariamente los que menos memoria consumen. Además el paradigma de programación utilizado influye directamente en la eficiencia energética, siendo los más eficientes (de mayor a menor): los lenguajes imperativos, los orientados a objetos, los funcionales y finalmente (¡oh, sorpresa!) los lenguajes interpretados y de scripting. En el consumo de energía lo que más influye, por cierto, es el uso del procesador, algo de esperar.

También es interesante ver cómo dentro de los lenguajes más eficientes está Java, que es orientado a objetos y más fácil de utilizar que opciones más eficientes (aunque consume bastante más memoria que otras opciones). C# tampoco está nada mal. Y a años luz, con un uso muy ineficiente de la energía, tenemos lenguajes como Ruby, Python o Perl. Llama la atención el hecho de que JavaScript a pesar de ser un lenguaje de scripting tenga una gran eficiencia energética, velocidad razonable y consumo de memoria contenido.

Si tienes interés en optimizar dos dimensiones a la vez, al final del estudio se agrupan los lenguajes en función de las diferentes dimensiones, dos a dos, y también hay una priorización si quieres optimizar las tres (velocidad, memoria y energía) al mismo tiempo:

El claro ganador en todas las categorías es el lenguaje C, seguido de C++. No en vano se usa en todos los sistemas críticos de bajo nivel. Pero viendo la tabla sacas algunas ideas sobre qué lenguaje utilizar según el caso. Por ejemplo, el lenguaje Go no está de los primeros en lo que se refiere a eficiencia energética, pero no la tiene mala y es muy bueno optimizando memoria y velocidad (no en vano fue creado por Google orientado a ser empleado en servidores web altamente eficientes). Y Rust, su competencia de la mano de Mozilla y con los mismos objetivos, es buenísimo en las tres dimensiones.

Estos resultados se presentaron en un congreso internacional hace un par de meses en Vancouver, Canadá, y se pueden ver en detalle en un "paper" en el PDF enlazado más arriba. También han puesto en macha un sitio web (hecho con Google Sites 😯) para ver los resultados de manera más cómoda.

Como colofón al estudio han puesto en marcha un proyecto en Github mediante el cual podrás probar la eficiencia de tu propio código. Para ello debes crear una carpeta con un programa que quieres probar y crear un archivo make para compilarlo. Dispones de un script (paradójicamente escrito en Python) llamado compile_all.pyscript que te permitirá ejecutarlo y medir los resultados.

¿Qué opinas de este asunto? ¿Te influirá en el futuro para elegir un lenguaje o plataforma frente a otro? Déjanos tus impresiones en los comentarios.

Fecha de publicación:
campusMVP campusMVP es la mejor forma de aprender a programar online y en español. En nuestros cursos solamente encontrarás contenidos propios de alta calidad (teoría+vídeos+prácticas) creados y tutelados por los principales expertos del sector. Nosotros vamos mucho más allá de una simple colección de vídeos colgados en Internet porque nuestro principal objetivo es que tú aprendas. Ver todos los posts de campusMVP

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Comentarios (2) -

Juan Carlos
Juan Carlos

Muy interesante esta perspectiva de ver los lenguajes.

Responder

Muy buen artículo como todos lo que publican, con un lenguaje claro y muy profesional, lástima que no mencionen una vez más a mi eterno Pascal, solo eso. Gracias!

Responder

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.