Benchmarks de algoritmos en distintos lenguajes: ¿Cuál es más rápido?

Recientemente, mi compañero José Alberto nos escribía acerca del ranking de los lenguajes de programación más usados en el índice TIOBE, donde se comparaban los lenguajes por su uso según el estudio realizado por esta entidad.

Si estás barajando estudiar algún otro lenguaje, puede que además de su popularidad te interesen conocer otros datos, como es el caso del rendimiento que ofrecen sus programas interpretados o compilados frente a diversas situaciones.

Midiendo el rendimiento con software optimizado para el lenguaje

Aunque los benchmarks no están exentos de polémica, es una de las formas más efectivas de valorar el rendimiento de un software, especialmente si los algoritmos que se ponen a prueba son muy variados y están escritos específicamente para cada lenguaje, optimizando el código en la medida de lo posible.

Con esta idea, nació el Computer Language Benchmark Game, del proyecto Debian, donde se ponen a prueba diferentes porciones de código, las cuales resuelven los mismos problemas pero están escritas cada una en todos los lenguajes para los que se han tomado las muestras. Así, por ejemplo, se mide cuánto tarda un programa escrito en C para calcular un conjunto de Mandelbrot y generar una imagen portable del mismo, y se compara con un programa que ofrece los mismos resultados pero está escrito en otros lenguajes (como Ruby, Ada, Python, Erlang…). En ocasiones, se prueban diferentes soluciones en código para el mismo problema y el mismo lenguaje, para comparar cuál de ellas funciona mejor.

¿Dónde compiten estas implementaciones?

Dado que hoy en día la velocidad a la que se ejecuta un determinado programa puede verse muy influenciada por el número de núcleos presentes en la máquina en que se ejecutan estos benchmarks, los algoritmos se prueban en diferentes tipos de hardware, desde máquinas con un solo core hasta máquinas quad-core. Así, se intenta ofrecer una mejor oportunidad a aquellos intérpretes o compiladores que generen código máquina optimizado para ejecutarse en sistemas con múltiples procesadores.

¿Qué medidas se toman?

Los valores que se miden en cada test son, entre otros: Tiempo de ejecución, cantidad de memoria utilizada, y número de líneas empleadas en el código fuente del programa.

Por supuesto, esto no debería ser motivo único para elegir uno u otro lenguaje de programación, especialmente porque para la gran mayoría de los lenguajes testeados existen múltiples compiladores y/o intérpretes, y cada uno ofrece un rendimiento diferente. Y también porque la calidad de un lenguaje se mide también por otros parámetros, como la legibilidad o la sencillez para escribir código en él (más tiempo máquina, menos tiempo hombre). Pero puede servirnos para tener algunas pistas acerca de cómo se comportan estos lenguajes en entornos más o menos reales.

Sitio Oficial | The Computer Language Benchmark Game

Portada de Genbeta