On Tuesday, 18 August 2015 at 10:45:49 UTC, Walter Bright wrote:
So if you're comparing code generated by dmd/gdc/ldc, and notice something that dmd could do better at (1, 2 or 3), please let me know. Often this sort of thing is low hanging fruit that is fairly easily inserted into the back end.


I have a about 30 lines of numerical code (using real) where the gap is about 200%-300% between ldc/gdc and dmd (linux x86_64). In fact dmd -O etc is at the level of ldc/gdc without any optimizations and dmd without -0 is even slower.
With double instead of real the gap is about 30%.

dmd is unable to inline 3 function calls (pragma(inline, true) => compiler error) but for ldc disabling inlining does not really hurt performance.

My knowledge of asm and compiler optimizations are quite limited and I can't figure out what dmd could do better.

If someone is interested to investigate this, I can put the source + input file for the benchmark on github. Just ping me:)

Notice: I use ldc/gdc anyway for such stuff and imo the performance of dmd is not the most important issue with D - e.g. compared to C++ interface (mainly std::vector).

Reply via email to