Articulo de referencia

El juego de evaluación comparativa de lenguajes informáticos

El Computer Language Benchmarks Game (anteriormente llamado The Great Computer Language Shootout ) es un proyecto de software libre para comparar cómo se puede implementar un su...

El Computer Language Benchmarks Game (anteriormente llamado The Great Computer Language Shootout ) es un proyecto de software libre para comparar cómo se puede implementar un subconjunto dado de algoritmos simples en varios lenguajes de programación populares .

El proyecto consta de:

  • Un conjunto de problemas algorítmicos muy simples (trece en total) [ 1 ]
  • Diversas implementaciones de los problemas anteriores en varios lenguajes de programación.
  • Un conjunto de pruebas unitarias para verificar que las implementaciones enviadas resuelven el enunciado del problema.
  • Un marco para ejecutar y cronometrar las implementaciones.
  • Un sitio web para facilitar la comparación interactiva de los resultados.

Idiomas compatibles

Métrica

Se miden los siguientes aspectos de cada implementación dada: [ 2 ]

Es común encontrar múltiples soluciones para un mismo problema en un mismo lenguaje de programación. Esto demuestra que, dentro de las limitaciones de un lenguaje determinado, se puede ofrecer una solución que sea altamente abstracta, eficiente en el uso de memoria, rápida o que permita una mejor paralelización.

Programas de referencia

Desde el principio se optó por incluir únicamente problemas de juguete muy sencillos, cada uno de los cuales planteaba un desafío de programación diferente. [ 3 ] Esto brinda a los usuarios del Juego de Referencia la oportunidad de analizar las distintas implementaciones. [ 4 ]

Historia

El proyecto se conoció como The Great Computer Language Shootout hasta 2007. [ 5 ]

Entre 2002 y 2003 se mantuvo por separado una versión para Windows. [ 6 ]

Las fuentes se han archivado en GitLab. [ 7 ]

También hay bifurcaciones más antiguas en GitHub. [ 8 ]

El proyecto está en constante evolución. La lista de lenguajes de programación compatibles se actualiza aproximadamente una vez al año, siguiendo las tendencias del mercado. Los usuarios también pueden enviar soluciones mejoradas a cualquiera de los problemas o sugerir mejoras en la metodología de pruebas. [ 9 ]

Advertencias

Los propios desarrolladores destacan que quienes realizan investigaciones deben tener precaución al utilizar este tipo de microbenchmarks:

[...] Los benchmarks de JavaScript son efímeros y se comportan de maneras significativamente diferentes a las aplicaciones reales. Hemos documentado numerosas diferencias de comportamiento y, a partir de estas diferencias medidas, concluimos que los resultados basados ​​en los benchmarks pueden inducir a error a los desarrolladores de motores JavaScript. Además, observamos comportamientos interesantes en aplicaciones JavaScript reales que los benchmarks no muestran, lo que sugiere que estrategias de optimización previamente inexploradas podrían ser productivas en la práctica.

Impacto

Los resultados de las pruebas de rendimiento han revelado diversos problemas en los compiladores. En ocasiones, un compilador determinado no lograba procesar construcciones inusuales, pero gramaticalmente válidas. En otras ocasiones, el rendimiento en tiempo de ejecución resultó ser inferior al esperado, lo que impulsó a los desarrolladores de compiladores a revisar sus capacidades de optimización.

Diversos artículos de investigación se han basado en los puntos de referencia, sus resultados y su metodología. [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ 19 ] [ 20 ] [ 21 ] [ 22 ]

Véase también

Referencias

  1. Couto, Marco; Pereira, Rui; Ribeiro, Francisco; Rúa, Rui; Saraiva, João (21 de septiembre de 2017). "Hacia un ranking ecológico de lenguajes de programación" . Actas del XXI Simposio Brasileño de Lenguajes de Programación . SBLP '17. Nueva York, NY, EE.UU.: Asociación de Maquinaria de Computación. págs. 1 a 8. doi : 10.1145/3125374.3125382 . hdl : 1822/65360 . ISBN  978-1-4503-5389-2.
  2. "Cómo se miden los programas: el juego de evaluación comparativa de lenguajes informáticos" . benchmarksgame-team.pages.debian.net/benchmarksgame/ . Consultado el 29 de mayo de 2018 .
  3. "¿Por qué programas de juguete? – El juego de evaluación comparativa de lenguajes de programación" . benchmarksgame-team.pages.debian.net/benchmarksgame . Consultado el 29 de mayo de 2018 .
  4. "Descripción de n-cuerpos (Ubuntu de cuatro núcleos de 64 bits) – Juego de evaluación comparativa de lenguajes informáticos" . benchmarksgame-team.pages.debian.net/benchmarksgame . Consultado el 29 de mayo de 2018 .
  5. "Confía y verifica: juego de evaluación comparativa de lenguajes informáticos" . benchmarksgame-team.pages.debian.net/benchmarksgame . Consultado el 29 de mayo de 2018 .
  6. "El gran duelo de lenguajes informáticos Win32" . Dada.perl.it. Consultado el 13 de diciembre de 2017 .
  7. "archive-alioth-benchmarksgame" . salsa.debian.org/benchmarksgame-team . Consultado el 29 de mayo de 2018 .
  8. Thiel, Sebastian (24 de octubre de 2017). "benchmarksgame-cvs-mirror: Un espejo Git del repositorio CVS de benchmarksgame" . GitHub . Recuperado el 13 de diciembre de 2017 .
  9. "Contribuye con tu propio programa: Juego de evaluación comparativa de lenguajes informáticos" . benchmarksgame-team.pages.debian.net/benchmarksgame . Consultado el 29 de mayo de 2018 .
  10. Kevin Williams; Jason McCandless; David Gregg (2009). Interpretación dinámica para lenguajes de scripting dinámicos (PDF) (Informe) . Recuperado el 25 de marzo de 2017 .
  11. Tobias Wrigstad; Francesco Zappa Nardelli; Sylvain Lebresne Johan; Ostlund Jan Vitek (17–23 de enero de 2009). Integración de código tipado y no tipado en un lenguaje de scripting (PDF) . POPL'10. Madrid, España . Consultado el 25 de marzo de 2017 .
  12. Lerche, Carl (17-18 de abril de 2009). Escribe Ruby rápido: todo se trata de la ciencia (PDF) . Conferencia Golden Gate Ruby. San Francisco, California . Recuperado el 25 de marzo de 2017 .
  13. J. Shirako; DM Peixotto; V. Sarkar; WN Scherer III (2009). Phaser Accumulators: a New Reduction Construct for Dynamic Parallelism (PDF) . Simposio Internacional IEEE sobre Procesamiento Paralelo y Distribuido . Consultado el 25 de marzo de 2017 .
  14. Rajesh Karmani, Amin Shali y Gul Agha (2009). "Marcos de actores para la plataforma JVM: un análisis comparativo" (PDF) . En Actas de la 7.ª Conferencia Internacional sobre los Principios y la Práctica de la Programación en Java . Consultado el 26 de marzo de 2017 .
  15. Brunthaler Stefan (2010). Inline Caching Meets Quickening . Conferencia Europea sobre Programación Orientada a Objetos (ECOOP). Vol. Programación Orientada a Objetos. pp. 429–451 . doi : 10.1007/978-3-642-14107-2_21 .  
  16. Prodromos Gerakios; Nikolaos Papaspyrou; Konstantinos Sagonas (23 de enero de 2010). Multiprocesamiento seguro y sin condiciones de carrera: diseño e implementación en Cyclone (PDF) . Actas del 5.º taller ACM SIGPLAN sobre tipos en el diseño e implementación de lenguajes. Madrid, España. pp. 15–26 . Consultado el 25 de marzo de 2017 . 
  17. Slava Pestov; Daniel Ehrenberg; Joe Groff (18 de octubre de 2010). Factor: Un lenguaje de programación dinámico basado en pila (PDF) . DLS 2010. Reno/Tahoe, Nevada, EE. UU . Recuperado el 25 de marzo de 2017 .
  18. Andrei Homescu; Alex Suhan (24 de octubre de 2011). HappyJIT: Un compilador JIT de rastreo para PHP (PDF) . DLS'11. Portland, Oregón, EE. UU . Recuperado el 25 de marzo de 2017 .
  19. Vincent St-Amour; Sam Tobin-Hochstadt; Matthias Felleisen (19-26 de octubre de 2012). Optimization Coaching – Optimizers Learn to Communicate with Programmers (PDF) . OOPSLA'12. Tucson, Arizona, EE. UU . Consultado el 25 de marzo de 2017 .
  20. Wing Hang Li; David R. White; Jeremy Singer (11-13 de septiembre de 2013). Lenguajes alojados en la JVM: ¿Lo dicen en serio, pero lo ponen en práctica? (PDF) . Actas de la Conferencia Internacional de 2013 sobre Principios y Prácticas de Programación en la Plataforma Java: Máquinas Virtuales, Lenguajes y Herramientas. Stuttgart, Alemania. págs. 101-112 . Consultado el 25 de marzo de 2017 . 
  21. Aibek Sarimbekov; Andrej Podzimek; Lubomir Bulej; Yudi Zheng; Nathan Ricci; Walter Binder (28 de octubre de 2013). Características de los lenguajes JVM dinámicos (PDF) . VMIL '13. Indianápolis, Indiana, EE. UU . Recuperado el 25 de marzo de 2017 .
  22. Bradford L. Chamberlain; Ben Albrecht; Lydia Duncan; Ben Harshbarger (2017). Entrando en la contienda: Entrada de Chapel en el juego de evaluación comparativa de lenguajes informáticos (PDF) . Recuperado el 25 de marzo de 2017 .
  • Sitio web oficialEdita esto en Wikidata
Obtenido de " https://en.wikipedia.org/w/index.php?title=The_Computer_Language_Benchmarks_Game&oldid=1347415427 "