Compilateur le plus rapide aka compilateur-benchmark

Du traducteur: tout a commencé par un sujet sur D.



Après avoir évalué la vitesse de compilation de D par rapport à d'autres langages, je me demandais s'il existe un langage qui compile en code natif presque aussi vite ou plus vite que D, à l'exception du C?

Si tel est le cas, il devrait probablement utiliser un backend autre que LLVM.

Je pense que Jai en est capable, mais il n'a pas encore été libéré.

Benchmarks de vitesse de compilation pour diverses combinaisons de langages et de compilateurs. Langues prises en charge:



Compilateurs de code natif





-





- 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 , , — , .



— , — , 12 D 230 Rust, .



En suivant le lien de la section correspondante, vous pouvez voir non seulement une comparaison avec d'autres langages absents ici, mais aussi jusqu'où la construction du compilateur a fait en 4 ans en termes de construction d'énormes programmes.




All Articles