Sorry for being vague and not giving the code here but a program I wrote
about spelling-out parts of a number (in Turkish) as in "1 milyon 42"
runs much faster with gdc.
The program integer-divides the number in a loop to find quotients and
adds the word next to it. One obvious optimization might be to use POSIX
div() and friends to get the quotient and the remainder at one shot but
I made myself believe that the compilers already do that. (But still not
sure. :o) )
I am not experienced with dub but I used --build=release-nobounds and
verified that -O3 is used for both compilers. (I also tried building
manually with GNU 'make' with e.g. -O5 and the results were similar.)
For a test run for 2 million numbers:
ldc: ~0.95 seconds
gdc: ~0.79 seconds
dmd: ~1.77 seconds
I am using compilers installed by Manjaro Linux's package system:
ldc: LDC - the LLVM D compiler (1.28.0):
based on DMD v2.098.0 and LLVM 13.0.0
gdc: dc (GCC) 11.1.0
dmd: DMD64 D Compiler v2.098.1
I've been mainly a dmd person for various reasons and was under the
impression that ldc was the clear winner among the three. What is your
experience? Does gdc compile faster programs in general? Would ldc win
if I took advantage of e.g. link-time optimizations?
Ali