www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - Updates to compile-benchmark

reply Per =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
As a response to the recent speed-ups of DMD, 
https://github.com/nordlow/compiler-benchmark/ has received 
several improvements during the past week. As a result, most 
notably,

- The output has become more readable through compacter table 
layouts and where the output has been sectioned by language into 
3 categories
- Benchmarking is now parallelized
- Language coverage is now broader
- The README.md is now (more) in sync with the code
- A new `--path` flag has been added to the benchmark script for 
better execution control
- Relative metrics is opt-in via `--rel`
- ...

Feel free to try it out and suggest improvements.

Happy benchmarking.
Sep 29
next sibling parent reply jmh530 <john.michael.hall gmail.com> writes:
On Tuesday, 29 September 2026 at 21:48:21 UTC, Per Nordlöw wrote:
 As a response to the recent speed-ups of DMD, 
 https://github.com/nordlow/compiler-benchmark/ has received 
 several improvements during the past week. As a result, most 
 notably,

 - The output has become more readable through compacter table 
 layouts and where the output has been sectioned by language 
 into 3 categories
 - Benchmarking is now parallelized
 - Language coverage is now broader
 - The README.md is now (more) in sync with the code
 - A new `--path` flag has been added to the benchmark script 
 for better execution control
 - Relative metrics is opt-in via `--rel`
 - ...

 Feel free to try it out and suggest improvements.

 Happy benchmarking.
Am I reading this right: dmd has runtime of 5,36 for us/f, gdc has 125,46 and ldmd2 has 175,52. So ldc and gdc are slower than dmd?
Oct 03
next sibling parent reply Atila Neves <atila.neves gmail.com> writes:
On Sunday, 4 October 2026 at 02:26:20 UTC, jmh530 wrote:
 On Tuesday, 29 September 2026 at 21:48:21 UTC, Per Nordlöw 
 wrote:
 [...]
Am I reading this right: dmd has runtime of 5,36 for us/f, gdc has 125,46 and ldmd2 has 175,52. So ldc and gdc are slower than dmd?
They always have been? Maybe you're confusing compilation speed with the speed of the generated binary?
Oct 05
next sibling parent Shammah Chancellor <shammah.chancellor gmail.com> writes:
On Monday, 5 October 2026 at 08:29:58 UTC, Atila Neves wrote:
 On Sunday, 4 October 2026 at 02:26:20 UTC, jmh530 wrote:
 On Tuesday, 29 September 2026 at 21:48:21 UTC, Per Nordlöw 
 wrote:
 [...]
Am I reading this right: dmd has runtime of 5,36 for us/f, gdc has 125,46 and ldmd2 has 175,52. So ldc and gdc are slower than dmd?
They always have been? Maybe you're confusing compilation speed with the speed of the generated binary?
Am I reading the README correctly that the runtime of the d samples are also faster? It also says that the build times of Cuik are faster, but from reading the table that's not what the table says?
Oct 05
prev sibling parent jmh530 <john.michael.hall gmail.com> writes:
On Monday, 5 October 2026 at 08:29:58 UTC, Atila Neves wrote:
 On Sunday, 4 October 2026 at 02:26:20 UTC, jmh530 wrote:
 On Tuesday, 29 September 2026 at 21:48:21 UTC, Per Nordlöw 
 wrote:
 [...]
Am I reading this right: dmd has runtime of 5,36 for us/f, gdc has 125,46 and ldmd2 has 175,52. So ldc and gdc are slower than dmd?
They always have been? Maybe you're confusing compilation speed with the speed of the generated binary?
Ah, yes.
Oct 05
prev sibling next sibling parent Per =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
On Sunday, 4 October 2026 at 02:26:20 UTC, jmh530 wrote:
 Am I reading this right: dmd has runtime of 5,36 for us/f, gdc 
 has 125,46 and ldmd2 has 175,52. So ldc and gdc are slower than 
 dmd?
For debug runtime performance, yes; for release runtime performance, no. Walter Bright made a pragmatic trade-off favoring fast compilation *and* fast execution generated machine code for the sake of rapid developer turnaround during the iteration loop. The primary objective of compiler-benchmark is to compare this developer inner loop—such as quick semantic checking and running unit tests in debug mode.
Oct 07
prev sibling parent Per =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
On Sunday, 4 October 2026 at 02:26:20 UTC, jmh530 wrote:
 Am I reading this right: dmd has runtime of 5,36 for us/f, gdc 
 has 125,46 and ldmd2 has 175,52. So ldc and gdc are slower than 
 dmd?
I must have messed something up in that version. Please see updated tables at https://github.com/nordlow/compiler-benchmark/#tier-2-modern-systems-languages-ahead-of-time.
Oct 08
prev sibling parent reply Per =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
On Tuesday, 29 September 2026 at 21:48:21 UTC, Per Nordlöw wrote:
 As a response to the recent speed-ups of DMD, 
 https://github.com/nordlow/compiler-benchmark/ has received 
 several improvements during the past week.
A larger set of new features has been added since 29 September. Please consult README for details.
Oct 07
parent Per =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
On Wednesday, 7 October 2026 at 16:37:44 UTC, Per Nordlöw wrote:
 A larger set of new features has been added since 29 September.
Regarding the recent improvements to DMD, an important case is `LD_PRELOAD=/usr/lib/libmimalloc.so ./benchmark --languages=D:dmd,Zig,Rust,Odin,C++` outputting ``` Running benchmarks in parallel across 8 CPU core(s) (1 worker per core)... *Full type inference, monomorphization/generics, semantic safety, module systems.* *Cells with two values: untemplated, templated (`-` = not available).* ``` | Language (Exec) | Total (Build + Run) [us/f] | Check [us/f] | Compile [us/f] | Check RSS [kB/f] | Build RSS [kB/f] | Output Size [B/f] | | :-------------------------------: | :------------------------------------: | :----------: | :------------: | :--------------: | :--------------: | :---------------: | | C++ (clang++ 23.1.1) | 85.3 (85.1+0.16), 117.7 (117.7+0.07) | 17.3, 30.6 | 79.6, 98.6 | 3.6, 6.0 | 10.1, 13.2 | 151.1, 155.1 | | C++ (g++ 16.2.1) | 249.0 (248.9+0.06), 312.4 (312.4+0.04) | 31.3, 75.1 | 394.8, 314.1 | 7.6, 11.4 | 18.1, 21.8 | 126.1, 130.1 | | C++ (g++-15 15.3.0) | 228.5 (228.5+0.05), 263.8 (263.8+0.04) | 26.7, 68.1 | 228.5, 276.6 | 7.0, 10.5 | 17.4, 21.7 | 126.1, 130.1 | | D (dmd 2.113.0-fe13b6a) | 13.5 (13.5+0.04), 20.9 (20.9+0.04) | 4.8, 9.9 | 10.9, 17.7 | 4.8, 11.9 | 16.8, 23.7 | 178.5, 194.5 | | Odin (odin dev-2026-09:a2fb372b7) | 90.4 (90.3+0.10), 106.2 (106.2+0.04) | 20.4, 29.2 | N/A | 20.5, 32.0 | 40.6, 51.5 | 112.6, 132.6 | | Rust (rustc 1.100.0-nightly) | 177.9 (177.8+0.17), 189.3 (189.3+0.09) | 88.5, 114.1 | N/A | 16.2, 17.5 | 32.0, 30.1 | 360.4, 300.3 | | Zig (zig 0.18.0-dev.35+5e754304d) | 87.2 (87.1+0.10), 93.9 (93.8+0.10) | 22.1, 24.5 | 86.2, 90.0 | 4.5, 5.4 | 9.6, 12.8 | 1503.4, 1422.5 | on my AMD Ryzen 7 AI 350.
Oct 07