[vc_row][vc_column][vc_column_text]Ser eficiente con el uso de la energía no es sólo un problema de hardware. El lenguaje de programación elegido puede tener grandes efectos en el consumo eficiente de energía. Revisaremos que es lo que hace que un lenguaje de programación sea eficiente en el uso de energía.[/vc_column_text][vc_row_inner][vc_column_inner][vc_single_image image=»1228″ img_size=»full» alignment=»center»][/vc_column_inner][/vc_row_inner][vc_column_text]Por años, se ha confundido rendimiento con el tiempo de procesamiento. «¿Cuan bien lo hace?» significaba «¿Cuan rápido lo hace?», pero en estos días, las cosas han cambiado. Programadores, ingenieros e incluso consumidores, están revisando como mejorar el uso del CPU de forma que se pueda preservar mejor la batería. Ser eficiente con el uso de la energía inicia del lado del hardware, pero ahora esta cayendo del lado del software.
Hay muchas preguntas que surgen cuando se intenta revisar el uso eficiente de energía de un lenguaje de programación. Como por ejemplo, ¿Que tipo de métricas se están utilizando? ¿Es un lenguaje de programación más rápido más eficiente con el uso de energía?
Sin embargo, comparar los lenguajes es difícil. El rendimiento de un lenguaje puede ser fácilmente mejorado sólo con la calidad de el compilador o máquina virtual. El optimizar el código fuente es tan importante como las librerías mejoradas.
Un equipo de investigadores portugueses, a través del estudio «Energy Efficiency across Programming Languages«, han estudiado 27 de los más populares lenguajes de programación para analizar si hay una relación entre velocidad y eficiencia en el uso de energía.
Utilizando the Computer Benchmarks Game, el equipo de investigadores probaron varios lenguajes compilando/ejecutando dichos programas utilizando los mejores compiladores, maquinas virtuales, interpretes y librerías. Luego analizaron el rendimiento de las diferentes implementaciones considerando tres variables:
- tiempo de ejecución
- consumo de memoria
- consumo de energía
[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]
Total |
[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column width=»1/3″][vc_column_text]
Lenguaje de programación | Energía |
(c)C (c)Rust (c)C++ (c)Ada (v)Java (c)Pascal (c)Chapel (v)Lisp … (i)JavaScript (i)PHP (i)JRuby (i)Ruby (i)Python (i)Perl | 1.00 1.03 1.34 1.70 1.98 2.14 2.18 2.27 … 4.45 29.30 46.54 69.91 75.88 79.58 |
[/vc_column_text][/vc_column][vc_column width=»1/3″][vc_column_text]
Lenguaje de programación | Tiempo |
(c)C (c)Rust (c)C++ (c)Ada (v)Java (c)Chapel (c)Go (c)Pascal … (i)JavaScript (i)PHP (i)JRuby (i)Ruby (i)Perl (i)Python | 1.00 1.04 1.56 1.85 1.89 2.14 2.83 3.02 … 6.52 27.64 43.44 59.34 65.79 71.90 |
[/vc_column_text][/vc_column][vc_column width=»1/3″][vc_column_text]
Lenguaje de programación | Memoria |
(c)Pascal (c)Go (c)C (c)Fortran (c)C++ (c)Ada (c)Rust (i)PHP … (i)Python (i)Ruby (i)JavaScript (i)Java (i)Perl (i)JRuby | 1.00 1.05 1.17 1.24 1.34 1.47 1.54 2.57 … 2.80 3.97 4.59 6.01 6.62 19.84 |
[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]Considerar que: (c) indica compilado, (v) virtual machine e (i) interpretado.
El equipo de investigación quedo sorprendido, pues no siempre velocidad significa uso eficiente de energía. Lenguajes compilados como C, C++, Rust y Ada se encuentran en el ranking de los lenguajes más eficientes en el uso de energía.
Sin embargo, Java es uno de los lenguajes de programación orientado a objetos más rápidos y más eficientes en el uso de energía. Lenguajes interpretados como Perl, Pytho y Ruby son los menos eficientes en el uso de energía. En forma adicional, los investigadores descubrieron, la energía consumida por el CPU siempre representa la mayoría de la energía consumida.
En promedio, si se ordenan por el paradigma de programación, los lenguajes imperativos necesitan menos memoria, seguidos por los lenguajes orientado a objetos, funcionales y finalmente los lenguajes de script.
En conclusión, ¿se puede elegir un lenguaje de programación basado en la energía, tiempo y memoria? La repuesta es si. «C» es el claro ganador a través de cada uno de estos campos. Pero si no estas interesado en codificar en C, se tienen algunas opciones:
- Tiempo y Memoria
- C, Pascal, Go
- Rust, C++, Fortran
- Java, Chapel, Lisp
- ….
- JavaScript, Ruby
- JRuby, Perl
- Energía y Tiempo
- C, Rust, C++
- Java, Pascal
- …
- JavaScript
- PHP, JRuby
- Ruby
- Energía y Memoria
- C, Pascal
- C++, Go
- Java, Lisp
- …
- C#, PHP
- Python
- JavaScript, Ruby
- Energía – Tiempo – Memoria
- C, Pascal, Go
- Rust, C++
- Java, Chapel, Lisp
- …
- PHP, JavaScript, Ruby, Python
- Perl, JRuby
Es bueno tener otra perspectiva sobre los lenguajes de programación y cuan adecuados son, no sólo considerando la velocidad de programación.
Este artículo se encuentra basado en Energy Efficient Programming Languages.[/vc_column_text][/vc_column][/vc_row]