On Tuesday, 27 October 2015 at 03:10:43 UTC, H. S. Teoh wrote:
On Tue, Oct 27, 2015 at 02:21:38AM +0000, Laeeth Isharc via Digitalmars-d wrote: [...]
So I would suggest it isn't productive to think about whether Dmd will catch up. Maybe, maybe not. Doesn't matter. Making it faster will help many - this defeatist attitude of 'why bother - just use GDC or LDC' may not be the best long-term strategy (remember that these too are volunteer projects, and they don't have an army, especially GDC, and you shouldn't assume that magically they'll always manage just because they have so far), whether or not it catches up. There's always an opportunity cost, but so what.

One should treat dmd performance as an interesting challenge, not something that's set in stone, and can never much change.

While I agree that improving dmd performance will at the end of the day reap benefits for all parties involved, I'm also not holding my breath for that to happen. I haven't measured the performance of the latest DMD git HEAD against GDC, but the last time I checked (which is sometime earlier this year, not that long ago), GDC-generated code still outperforms DMD-generated code by 20%-30%.

Judging from the assembly code, this difference mainly arises from the DMD inliner being overly conservative, and the lack of advanced loop optimization techniques such as aggressive code hoisting, strength reduction, unrolling, etc.. Fixing the inliner will probably be relatively easy; loop optimizations will be more challenging, especially if Walter continues to insist on compilation speed. Some of the problems that have to be solved in advanced loop optimization require more expensive algorithms, which may incur a penalty on compilation time.


T

Thanks for the insight.

If the optimisations are configurable by the user, you pick your poison, and live with that tradeoff, no?


Reply via email to