Crimson
Captura de punkmetal-vs-others

punkmetal-vs-others

El mismo programa escrito once veces, en once lenguajes, para medir cuál tarda menos.

Estado
Anda
Desarrollo
42 h

Un banco de pruebas que compara once lenguajes sobre el mismo problema. El mismo algoritmo está escrito once veces, una por lenguaje, y se corre en las mismas condiciones.

Mide a dos de los lenguajes de esta página, Punk y metaltoy, así que no puede vivir adentro de ninguno de los dos.

Funcionalidades

Los once

  • Propios: Punk, que traduce a C, y metaltoy, que compila a ARM64 y ejecuta en memoria.
  • Compilados: C, C++, Rust, Go, Zig y Swift.
  • Interpretados: Python, Julia y R.
  • Si falta un compilador, ese lenguaje se salta con un aviso y la corrida sigue con los otros.

Las pruebas

  • Las categorías van de lo numérico a las cadenas, las colecciones, el control, los recorridos, FASTA, coordenadas celestes, el lenguaje y lo visual.
  • Se elige la categoría, la prueba, cuántas corridas y qué lenguajes entran.
  • Los datos grandes se regeneran. Un FASTA sintético y un corpus de texto.

Los resultados

  • Medir dos lenguajes deja intactos los resultados de los demás.
  • Los resultados versionados son la serie histórica. Un programa la recorre por el historial de git y dibuja la evolución de metaltoy en el tiempo.
  • Las tablas guardadas sirven de referencia. Una medición que se aparta de ellas hay que explicarla.
  • Las gráficas de barras se regeneran a partir de los resultados.

Cómo se mide

  • La máquina deriva sola. Dos corridas seguidas del mismo binario pueden diferir bastante.
  • Antes de creerle a una diferencia van el calentamiento y varias repeticiones.

← todos los proyectos