Benchmarks canônicos entre idiomas
Esta página relata uma execução local completa do conjunto canônico benchLANG em 12/07/2026. Todas as 19 implementações de linguagem configuradas concluíram todas as cinco cargas de trabalho com resultados válidos.
O conjunto foi executado em Linux 7.0.0 x86-64 com um AMD Ryzen 9 5900X (12 núcleos, 24 threads) e 30 GiB de RAM. Cada linguagem foi compilada uma vez e executada uma vez. A máquina não estava isolada, a frequência da CPU não estava bloqueada e outras cargas do sistema estavam presentes, portanto, essas medições são um instantâneo reproduzível e não uma reivindicação de classificações estatisticamente estáveis.
As cargas de trabalho canônicas são:
- peneira principal até 20.000.000;
- Fibonacci recursivo em
fib(45); - 5.000.000 de iterações de processamento de strings;
- Mandelbrot em 4096 x 4096 com no máximo 256 iterações por pixel;
- árvores binárias da profundidade 4 até a profundidade 18.
O tempo de execução é o tempo decorrido interno da carga de trabalho. O tempo de compilação é o tempo decorrido para a construção do conjunto. LOC conta o arquivo fonte completo para aquele idioma. O pico de RSS é medido para o processo completo do conjunto com /usr/bin/time -v, e o tamanho binário é o artefato completo do conjunto gerado. Como todas as cinco cargas de trabalho compartilham um arquivo de origem, as métricas de build, LOC, RSS e binárias se repetem em cada tabela de carga de trabalho. — significa que o caminho de inicialização de origem, orientado por JIT ou interpretado não produziu uma fase de compilação medida separadamente ou um binário independente.
Peneira principal
| Idioma | Execução(ões) | Compilar(ões) | LOC | Pico de RSS | Binário |
|---|---|---|---|---|---|
| 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 MB | 52,1 KB |
| Ziguezague | 2.612 | 4.23 | 180 | 32,9 MiB | 204,0 KB |
| D | 2.614 | 3.10 | 133 | 97,3 MiB | 1,13 MiB |
| Java | 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 KB |
| JavaScript (Pão) | 2.649 | - | 108 | 342,8 MiB | - |
| JavaScript (nó) | 2.663 | - | 108 | 303,2 MiB | - |
| Dardo | 2.905 | 1.22 | 130 | 69,8 MiB | 6,45 MB |
| Vá | 3.054 | 2,83 | 157 | 52,9 MiB | 1,53 MB |
| OCaml | 3.090 | 0,31 | 118 | 87,4 MiB | 1,86 MB |
| Pascal | 3.110 | 0,22 | 205 | 32,2 MiB | 548,3 KB |
| PHP | 3.198 | - | 127 | 179,2 MiB | - |
| Python (PyPy3) | 3.297 | - | 127 | 376,5 MiB | - |
| Python (Python3) | 60.688 | - | 127 | 153,1 MiB | - |
Fibonacci recursivo
| Idioma | Execução(ões) | Compilar(ões) | LOC | Pico de RSS | Binário |
|---|---|---|---|---|---|
| Nim | 0,096 | 1,44 | 119 | 50,0 MB | 52,1 KB |
| 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 |
| Ziguezague | 3.074 | 4.23 | 180 | 32,9 MiB | 204,0 KB |
| 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 KB |
| Java | 3.974 | - | 127 | 561,8 MiB | - |
| OCaml | 5.235 | 0,31 | 118 | 87,4 MiB | 1,86 MB |
| Vá | 5.584 | 2,83 | 157 | 52,9 MiB | 1,53 MB |
| Pascal | 5.709 | 0,22 | 205 | 32,2 MiB | 548,3 KB |
| JavaScript (Pão) | 7.489 | - | 108 | 342,8 MiB | - |
| Dardo | 7.850 | 1.22 | 130 | 69,8 MiB | 6,45 MB |
| JavaScript (nó) | 11.452 | - | 108 | 303,2 MiB | - |
| Python (PyPy3) | 12.589 | - | 127 | 376,5 MiB | - |
| PHP | 18.944 | - | 127 | 179,2 MiB | - |
| Python (Python3) | 113.390 | - | 127 | 153,1 MiB | - |
O resultado do Nim é relatado exatamente como medido, mas seu tempo fib(45) é uma forte especialização do otimizador ou sinal de dobramento constante. Não deve ser usado como evidência comparativa até que a carga de trabalho ganhe uma contribuição anti-dobramento.
Processamento de strings
| Idioma | Execução(ões) | Compilar(ões) | LOC | Pico de RSS | Binário |
|---|---|---|---|---|---|
| Ziguezague | 1.448 | 4.23 | 180 | 32,9 MiB | 204,0 KB |
| seed | 1.513 | 0,84 | 218 | 33,2 MiB | 27,8 KiB |
| JavaScript (nó) | 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 MB | 52,1 KB |
| C# | 2.228 | 4,37 | 129 | 116,9 MiB | 77,1 KB |
| 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 (Pão) | 2.742 | - | 108 | 342,8 MiB | - |
| Vá | 2.823 | 2,83 | 157 | 52,9 MiB | 1,53 MB |
| Fortran | 3.405 | 0,59 | 233 | 33,6 MiB | 32,5 KiB |
| Java | 4.018 | - | 127 | 561,8 MiB | - |
| OCaml | 4.093 | 0,31 | 118 | 87,4 MiB | 1,86 MB |
| Python (PyPy3) | 4.896 | - | 127 | 376,5 MiB | - |
| Dardo | 5.871 | 1.22 | 130 | 69,8 MiB | 6,45 MB |
| PHP | 7.251 | - | 127 | 179,2 MiB | - |
| Pascal | 12.094 | 0,22 | 205 | 32,2 MiB | 548,3 KB |
| Python (Python3) | 38.324 | - | 127 | 153,1 MiB | - |
Mandelbrot
| Idioma | Execução(ões) | Compilar(ões) | LOC | Pico de RSS | Binário |
|---|---|---|---|---|---|
| Nim | 1.855 | 1,44 | 119 | 50,0 MB | 52,1 KB |
| Vá | 1.911 | 2,83 | 157 | 52,9 MiB | 1,53 MB |
| 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 |
| Ziguezague | 2.119 | 4.23 | 180 | 32,9 MiB | 204,0 KB |
| C# | 2.120 | 4,37 | 129 | 116,9 MiB | 77,1 KB |
| Dardo | 2.166 | 1.22 | 130 | 69,8 MiB | 6,45 MB |
| Java | 2.166 | - | 127 | 561,8 MiB | - |
| JavaScript (nó) | 2.167 | - | 108 | 303,2 MiB | - |
| OCaml | 2.173 | 0,31 | 118 | 87,4 MiB | 1,86 MB |
| JavaScript (Pão) | 2.177 | - | 108 | 342,8 MiB | - |
| Pascal | 2.179 | 0,22 | 205 | 32,2 MiB | 548,3 KB |
| Python (PyPy3) | 2.280 | - | 127 | 376,5 MiB | - |
| PHP | 5.994 | - | 127 | 179,2 MiB | - |
| Python (Python3) | 73.626 | - | 127 | 153,1 MiB | - |
Árvores binárias
| Idioma | Execução(ões) | Compilar(ões) | LOC | Pico de RSS | Binário |
|---|---|---|---|---|---|
| Java | 0,550 | - | 127 | 561,8 MiB | - |
| OCaml | 0,924 | 0,31 | 118 | 87,4 MiB | 1,86 MB |
| JavaScript (Pão) | 0,930 | - | 108 | 342,8 MiB | - |
| Nim | 0,939 | 1,44 | 119 | 50,0 MB | 52,1 KB |
| Dardo | 0,959 | 1.22 | 130 | 69,8 MiB | 6,45 MB |
| C# | 1.121 | 4,37 | 129 | 116,9 MiB | 77,1 KB |
| JavaScript (nó) | 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 KB |
| 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 |
| Ziguezague | 1.943 | 4.23 | 180 | 32,9 MiB | 204,0 KB |
| Vá | 1.951 | 2,83 | 157 | 52,9 MiB | 1,53 MB |
| Rust | 2.233 | 2,69 | 142 | 33,3 MiB | 2,04 MiB |
| D | 3.352 | 3.10 | 133 | 97,3 MiB | 1,13 MiB |
| Python (PyPy3) | 5.801 | - | 127 | 376,5 MiB | - |
| PHP | 6.796 | - | 127 | 179,2 MiB | - |
| Python (Python3) | 16.851 | - | 127 | 153,1 MiB | - |
Suíte completa
O tempo do pacote completo é a soma relatada por cada implementação para todas as cinco cargas de trabalho. Está incluído como uma visão geral; as tabelas de carga de trabalho acima continuam sendo a comparação principal.
| Idioma | Execução(ões) | Compilar(ões) | LOC | Pico de RSS | Binário |
|---|---|---|---|---|---|
| Nim | 7.698 | 1,44 | 119 | 50,0 MB | 52,1 KB |
| 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 |
| Ziguezague | 11.194 | 4.23 | 180 | 32,9 MiB | 204,0 KB |
| Fortran | 11.331 | 0,59 | 233 | 33,6 MiB | 32,5 KiB |
| C# | 11.424 | 4,37 | 129 | 116,9 MiB | 77,1 KB |
| Rust | 12.146 | 2,69 | 142 | 33,3 MiB | 2,04 MiB |
| Java | 13.331 | - | 127 | 561,8 MiB | - |
| D | 13.595 | 3.10 | 133 | 97,3 MiB | 1,13 MiB |
| Vá | 15.322 | 2,83 | 157 | 52,9 MiB | 1,53 MB |
| OCaml | 15.515 | 0,31 | 118 | 87,4 MiB | 1,86 MB |
| JavaScript (Pão) | 15.989 | - | 108 | 342,8 MiB | - |
| JavaScript (nó) | 19.319 | - | 108 | 303,2 MiB | - |
| Dardo | 19.752 | 1.22 | 130 | 69,8 MiB | 6,45 MB |
| Pascal | 24.652 | 0,22 | 205 | 32,2 MiB | 548,3 KB |
| Python (PyPy3) | 28.863 | - | 127 | 376,5 MiB | - |
| PHP | 42.224 | - | 127 | 179,2 MiB | - |
| Python (Python3) | 302.933 | - | 127 | 153,1 MiB | - |
Reprodução
A execução completa usada:
cd benchLANG
./run_benchmarks.sh --runs 1 --timeout 600
As correções de cache do conjunto de ferramentas local foram seguidas por repetições direcionadas para Zig, Go, Nim, C# e Dart. As tabelas mesclam apenas o último resultado bem-sucedido para cada idioma.