Benchmark canonici tra lingue diverse

Questa pagina riporta un'esecuzione locale completa della suite canonica benchLANG il 12-07-2026. Tutte le 19 implementazioni linguistiche configurate hanno completato tutti e cinque i carichi di lavoro con risultati validi.

La suite è stata eseguita su Linux 7.0.0 x86-64 con un AMD Ryzen 9 5900X (12 core, 24 thread) e 30 GiB di RAM. Ogni lingua è stata compilata una volta ed eseguita una volta. La macchina non era isolata, la frequenza della CPU non era bloccata ed era presente altro carico di sistema, quindi queste misurazioni sono un'istantanea riproducibile, non una pretesa di classifiche statisticamente stabili.

I carichi di lavoro canonici sono:

Il tempo di esecuzione è il tempo trascorso interno del carico di lavoro. Il tempo di compilazione è il tempo trascorso per la compilazione della suite. LOC conta il file sorgente completo per quella lingua. Il picco RSS viene misurato per l'intero processo della suite con /usr/bin/time -ve la dimensione binaria è l'artefatto della suite generato completo. Poiché tutti e cinque i carichi di lavoro condividono un file di origine, i parametri build, LOC, RSS e binari si ripetono in ogni tabella del carico di lavoro. — significa che il percorso di esecuzione di avvio del codice sorgente, guidato da JIT o interpretato non ha prodotto una fase di compilazione misurata separatamente o un file binario autonomo.

Setaccio primo

Lingua Esecuzione/i Compila/i LOC Picco RSS Binario
C 2.608 0,33 172 33,1 MiB 28,3 KiB
Rust 2.609 2.69 142 33,3 MiB 2,04 MiB
Nim 2.612 1.44 119 50,0 MiB 52,1 KiB
Zig 2.612 4.23 180 32,9 MiB 204,0 KiB
D 2.614 3.10 133 97,3 MiB 1,13 MiB
Giava 2.615 — 127 561,8 MiB —
Fortran 2.616 0,59 233 33,6 MiB 32,5 KiB
Ada 2.617 0,98 224 34,8 MiB 48,7 KiB
seed 2.622 0,84 218 33,2 MiB 27,8 KiB
C# 2.630 4.37 129 116,9 MiB 77,1 KiB
JavaScript (panino) 2.649 — 108 342,8 MiB —
JavaScript (nodo) 2.663 — 108 303,2 MiB —
Dardo 2.905 1.22 130 69,8 MiB 6,45 MiB
Vai 3.054 2.83 157 52,9 MiB 1,53 MiB
OCaml 3.090 0,31 118 87,4 MiB 1,86 MiB
Pascal 3.110 0,22 205 32,2 MiB 548,3 KiB
PHP 3.198 — 127 179,2 MiB —
Pitone (PyPy3) 3.297 — 127 376,5 MiB —
Pitone (Python3) 60.688 — 127 153,1 MiB —

Fibonacci ricorsivo

Lingua Esecuzione/i Compila/i LOC Picco RSS Binario
Nim 0,096 1.44 119 50,0 MiB 52,1 KiB
Fortran 1.682 0,59 233 33,6 MiB 32,5 KiB
C 1.710 0,33 172 33,1 MiB 28,3 KiB
Ada 1.762 0,98 224 34,8 MiB 48,7 KiB
seed 2.979 0,84 218 33,2 MiB 27,8 KiB
Zig 3.074 4.23 180 32,9 MiB 204,0 KiB
Rust 3.082 2.69 142 33,3 MiB 2,04 MiB
D 3.083 3.10 133 97,3 MiB 1,13 MiB
C# 3.323 4.37 129 116,9 MiB 77,1 KiB
Giava 3.974 — 127 561,8 MiB —
OCaml 5.235 0,31 118 87,4 MiB 1,86 MiB
Vai 5.584 2.83 157 52,9 MiB 1,53 MiB
Pascal 5.709 0,22 205 32,2 MiB 548,3 KiB
JavaScript (panino) 7.489 — 108 342,8 MiB —
Dardo 7.850 1.22 130 69,8 MiB 6,45 MiB
JavaScript (nodo) 11.452 — 108 303,2 MiB —
Pitone (PyPy3) 12.589 — 127 376,5 MiB —
PHP 18.944 — 127 179,2 MiB —
Pitone (Python3) 113.390 — 127 153,1 MiB —

Il risultato Nim viene riportato esattamente come misurato, ma il suo tempo fib(45) è un forte segnale di specializzazione dell'ottimizzatore o di ripiegamento costante. Non dovrebbe essere utilizzato come prova comparativa finché il carico di lavoro non acquisisce un input anti-folding.

Elaborazione di stringhe

Lingua Esecuzione/i Compila/i LOC Picco RSS Binario
Zig 1.448 4.23 180 32,9 MiB 204,0 KiB
seed 1.513 0,84 218 33,2 MiB 27,8 KiB
JavaScript (nodo) 1.812 — 108 303,2 MiB —
Rust 2.105 2.69 142 33,3 MiB 2,04 MiB
C 2.124 0,33 172 33,1 MiB 28,3 KiB
Nim 2.188 1.44 119 50,0 MiB 52,1 KiB
C# 2.228 4.37 129 116,9 MiB 77,1 KiB
Ada 2.310 0,98 224 34,8 MiB 48,7 KiB
D 2.430 3.10 133 97,3 MiB 1,13 MiB
JavaScript (panino) 2.742 — 108 342,8 MiB —
Vai 2.823 2.83 157 52,9 MiB 1,53 MiB
Fortran 3.405 0,59 233 33,6 MiB 32,5 KiB
Giava 4.018 — 127 561,8 MiB —
OCaml 4.093 0,31 118 87,4 MiB 1,86 MiB
Pitone (PyPy3) 4.896 — 127 376,5 MiB —
Dardo 5.871 1.22 130 69,8 MiB 6,45 MiB
PHP 7.251 — 127 179,2 MiB —
Pascal 12.094 0,22 205 32,2 MiB 548,3 KiB
Pitone (Python3) 38.324 — 127 153,1 MiB —

Mandelbrot

Lingua Esecuzione/i Compila/i LOC Picco RSS Binario
Nim 1.855 1.44 119 50,0 MiB 52,1 KiB
Vai 1.911 2.83 157 52,9 MiB 1,53 MiB
Fortran 2.028 0,59 233 33,6 MiB 32,5 KiB
Ada 2.036 0,98 224 34,8 MiB 48,7 KiB
C 2.103 0,33 172 33,1 MiB 28,3 KiB
D 2.116 3.10 133 97,3 MiB 1,13 MiB
Rust 2.116 2.69 142 33,3 MiB 2,04 MiB
seed 2.119 0,84 218 33,2 MiB 27,8 KiB
Zig 2.119 4.23 180 32,9 MiB 204,0 KiB
C# 2.120 4.37 129 116,9 MiB 77,1 KiB
Dardo 2.166 1.22 130 69,8 MiB 6,45 MiB
Giava 2.166 — 127 561,8 MiB —
JavaScript (nodo) 2.167 — 108 303,2 MiB —
OCaml 2.173 0,31 118 87,4 MiB 1,86 MiB
JavaScript (panino) 2.177 — 108 342,8 MiB —
Pascal 2.179 0,22 205 32,2 MiB 548,3 KiB
Pitone (PyPy3) 2.280 — 127 376,5 MiB —
PHP 5.994 — 127 179,2 MiB —
Pitone (Python3) 73.626 — 127 153,1 MiB —

Alberi binari

Lingua Esecuzione/i Compila/i LOC Picco RSS Binario
Giava 0,550 — 127 561,8 MiB —
OCaml 0,924 0,31 118 87,4 MiB 1,86 MiB
JavaScript (panino) 0,930 — 108 342,8 MiB —
Nim 0,939 1.44 119 50,0 MiB 52,1 KiB
Dardo 0,959 1.22 130 69,8 MiB 6,45 MiB
C# 1.121 4.37 129 116,9 MiB 77,1 KiB
JavaScript (nodo) 1.223 — 108 303,2 MiB —
seed 1.263 0,84 218 33,2 MiB 27,8 KiB
Pascal 1.560 0,22 205 32,2 MiB 548,3 KiB
Fortran 1.600 0,59 233 33,6 MiB 32,5 KiB
C 1.626 0,33 172 33,1 MiB 28,3 KiB
Ada 1.795 0,98 224 34,8 MiB 48,7 KiB
Zig 1.943 4.23 180 32,9 MiB 204,0 KiB
Vai 1.951 2.83 157 52,9 MiB 1,53 MiB
Rust 2.233 2.69 142 33,3 MiB 2,04 MiB
D 3.352 3.10 133 97,3 MiB 1,13 MiB
Pitone (PyPy3) 5.801 — 127 376,5 MiB —
PHP 6.796 — 127 179,2 MiB —
Pitone (Python3) 16.851 — 127 153,1 MiB —

Suite completa

Il tempo completo della suite è la somma riportata da ciascuna implementazione per tutti e cinque i carichi di lavoro. È incluso come panoramica; le tabelle del carico di lavoro riportate sopra rimangono il confronto principale.

Lingua Esecuzione/i Compila/i LOC Picco RSS Binario
Nim 7.698 1.44 119 50,0 MiB 52,1 KiB
C 10.171 0,33 172 33,1 MiB 28,3 KiB
seed 10.496 0,84 218 33,2 MiB 27,8 KiB
Ada 10.521 0,98 224 34,8 MiB 48,7 KiB
Zig 11.194 4.23 180 32,9 MiB 204,0 KiB
Fortran 11.331 0,59 233 33,6 MiB 32,5 KiB
C# 11.424 4.37 129 116,9 MiB 77,1 KiB
Rust 12.146 2.69 142 33,3 MiB 2,04 MiB
Giava 13.331 — 127 561,8 MiB —
D 13.595 3.10 133 97,3 MiB 1,13 MiB
Vai 15.322 2.83 157 52,9 MiB 1,53 MiB
OCaml 15.515 0,31 118 87,4 MiB 1,86 MiB
JavaScript (panino) 15.989 — 108 342,8 MiB —
JavaScript (nodo) 19.319 — 108 303,2 MiB —
Dardo 19.752 1.22 130 69,8 MiB 6,45 MiB
Pascal 24.652 0,22 205 32,2 MiB 548,3 KiB
Pitone (PyPy3) 28.863 — 127 376,5 MiB —
PHP 42.224 — 127 179,2 MiB —
Pitone (Python3) 302.933 — 127 153,1 MiB —

Il seed il file del corpus è stato riscritto successivamente (15-10-2026) nell'attuale idioma di superficie (if let/while let, [0 as usize; 32], text.split_ascii + SplitToken.slice, presto return, expr; dichiarazioni), che modifica il seed solo riga: 173 loc, e sullo stesso host Ryzen 9 5900X una ripetizione ha misurato un tempo completo di 8.384s, 0.76s compilare, 58.3 KiB binario, 33.0 MiB picco RSS con checksum invariati. Una voce C++ (g++ -std=c++23 -O3 -march=native -flto) è stato aggiunto al cablaggio nella stessa modifica e misurato 7.605s, 159 loc, 1.44s compilare, 53.8 KiB, 35.7 MiB su quell'host. Entrambe sono osservazioni a esecuzione singola su una macchina non isolata; le tabelle sopra rimangono l'istantanea del 12-07-2026 che descrivono.

Riproduzione

La corsa completa utilizzata:

cd benchLANG
./run_benchmarks.sh --runs 1 --timeout 600

Le correzioni della cache della toolchain locale sono state seguite da repliche mirate per Zig, Go, Nim, C# e Dart. Le tabelle uniscono solo gli ultimi risultati positivi per ciascuna lingua.