Do tradutor: tudo começou com um tópico sobre D.
Depois de avaliar a velocidade de compilação de D em comparação com outras linguagens, eu queria saber se há alguma linguagem que compila para código nativo quase tão rápido ou mais rápido que D, exceto C?
Em caso afirmativo, então provavelmente ele deve estar usando um backend diferente do LLVM.
Acho que Jai é capaz disso, mas ainda não foi solto.
Benchmarks de velocidade de compilação para várias combinações de linguagens e compiladores. Idiomas suportados:
Compiladores para código nativo
- C (gcc, clang e cproc ),
- C ++ (g ++ e clang ++),
- D (dmd ldmd2 e gdc),
- Go (go and gccgo),
- Swift (swiftc),
- Ferrugem (ferrugem),
- Julia (julia).
- Ada (gnatgcc),
- Zig (zig),
- V (v),
- Vox (vox),
- C3 (c3c),
-
- Ubuntu ( 20.04) ./install-compilers-on-ubuntu-20.04.sh .
./benchmark \
--function-count=$FUNCTION_COUNT \
--function-depth=$FUNCTION_DEPTH \
--run-count=5
$FUNCTION_COUNT $FUNCTION_DEPTH
./benchmark
.
,
./benchmark --languages=C++,D,Rust
generated , . Markdown, . , Time [us/#fn] , . (args.function_count * args.function_depth).
GCC Clang C++ ( ). D Rust, .
, , , ,
./benchmark --function-count=3 --function-depth=2 --run-count=5
C, generated/c/main.c
long add_long_n0_h0(long x) { return x + 15440; }
long add_long_n0(long x) { return x + add_long_n0_h0(x) + 95485; }
long add_long_n1_h0(long x) { return x + 37523; }
long add_long_n1(long x) { return x + add_long_n1_h0(x) + 92492; }
long add_long_n2_h0(long x) { return x + 39239; }
long add_long_n2(long x) { return x + add_long_n2_h0(x) + 12248; }
int main(__attribute__((unused)) int argc, __attribute__((unused)) char* argv[]) {
long long_sum = 0;
long_sum += add_long_n0(0);
long_sum += add_long_n1(1);
long_sum += add_long_n2(2);
return long_sum;
}
. - . , .
, Go .
$LANG, , main.$LANG main_t.$LANG, main.$LANG, , ( main) . . Templated , .
.. , , . — .
( )
Vox, , . 3-4 , dmd. , Vox, , , , Windows , , .
D dmd cproc. , , cproc — .
GCC, Clang ( 8, 9, 10 ).
() C++ 3 , - gcc-8, 2.3 gcc-10. clang++-10 1.6. D (dmd) 2.5 . , , Rust 2-3 , - .
JIT- ( ) . function-count function-depth Julia — 5000. , .
OCaml ocamlopt , function-count function-depth 10000.
Intel Core i7-4710HQ CPU @ 2.50GHz × 8 16 GB Ubuntu 20.04
./benchmark --function-count=200 --function-depth=450 --run-count=3
, Pypy 3
pypy3 ./benchmark --function-count=200 --function-depth=450 --run-count=3
. , , — , . — / . 4 .
. ( ), .


— 5746,1
- C3
- Subprocess
- Fortran
- Pony
, . D Phobos , , — , .
Seguindo o link da seção correspondente, você pode ver não apenas uma comparação com outras linguagens que estão ausentes aqui, mas também o quão longe a construção de compiladores avançou em 4 anos em termos de construção de programas enormes.