El compilador más rápido también conocido como compilador-benchmark

Del traductor: todo comenzó con un tema sobre D.



Después de evaluar la velocidad de compilación de D en comparación con otros lenguajes, me preguntaba si hay algún lenguaje que compile en código nativo casi tan rápido o más rápido que D, excepto C.

Si es así, lo más probable es que deba usar un backend que no sea LLVM.

Creo que Jai es capaz de eso, pero aún no ha sido liberado.

Puntos de referencia de velocidad de compilación para varias combinaciones de lenguajes y compiladores. Idiomas admitidos:



Compiladores a código nativo





-





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



Siguiendo el enlace de la sección correspondiente, puede ver no solo una comparación con otros lenguajes que están ausentes aquí, sino también lo lejos que ha avanzado la construcción de compiladores en 4 años en términos de construcción de grandes programas.




All Articles