من المترجم: بدأ كل شيء بموضوع عن D.
بعد تقييم سرعة التحويل البرمجي لـ D مقارنة باللغات الأخرى ، كنت أتساءل عما إذا كانت هناك أي لغة يتم تجميعها إلى الكود الأصلي تقريبًا بسرعة أو أسرع من D ، باستثناء C؟
إذا كان الأمر كذلك ، فمن المرجح أنه يجب أن يستخدم خلفية أخرى غير LLVM.
أعتقد أن جاي قادر على ذلك ، لكن لم يُطلق سراحه بعد.
معايير سرعة الترجمة لتركيبات مختلفة من اللغات والمترجمات. اللغات المدعومة:
المجمعين للكود الأصلي
- C (gcc، clang and cproc ) ،
- C ++ (g ++ و clang ++) ،
- D (dmd ldmd2 و gdc) ،
- اذهب (اذهب و gccgo) ،
- سويفت ( سويفت ) ،
- الصدأ ( الصدأ ) ،
- جوليا ( جوليا ).
- 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 , , — , .
باتباع الرابط من القسم المقابل ، لا يمكنك فقط رؤية المقارنة مع اللغات الأخرى الغائبة هنا ، ولكن أيضًا إلى أي مدى حقق بناء المترجم في 4 سنوات من حيث بناء برامج ضخمة.