tooling quality and some random rant

Walter Bright newshound2 at digitalmars.com
Mon Feb 14 12:46:21 PST 2011


retard wrote:
> Your obsession with fast compile times is incomprehensible.

Yet people complain about excessive compile times with C++ all the time, such as 
overnight builds. Quite a few dmc++ customers stick with it because of compile 
times.


> It doesn't have any relevance in the projects I'm talking about.

It's relevant when you make claims you cannot create fast code with dmc, since 
dmc is itself built with dmc.


> The extensive optimizations and fast compile times have an inverse 
> correlation. Of course your compiler compiles faster if it optimizes 
> less. What's the point here?

It compiles far faster for debug builds, too. That is directly relevant to 
productivity in the edit/compile/debug loop.

It also makes a big difference to me that I can run the test suite in half an 
hour rather than an hour. It means I'll be less tempted to skip running the suite.


> All your examples and stories are from 1980's and 1990's. Any idea how 
> well dmc fares against latest Intel / Microsoft / GNU compilers?

Bearophile posted a benchmark last year where he concluded that modern compilers 
like LLVM beat the pants off of primitive, obsolete compilers like dmc for 
integer arithmetic. A little investigation showed it had nothing whatsoever to 
do with the compiler - it was the runtime library implementation of long divide 
that was the culprit. I corrected that, and the runtimes became indistinguishable.

I hear stuff about how dmc should catch up with LLVM and do modern things like 
data flow analysis, yet dmc has done data flow analysis since 1985. I also hear 
that dmc should do named return value optimization, not realizing that dmc 
*invented* named return value optimization and has done it since 1991. These 
claims are clearly made simply based on assumptions and reading the marketing 
literature of other compilers.

The point is, compiler optimizers hit a wall around 15 years ago. Only tiny 
improvements have happened since then. (Not considering vectorization, which is 
a big improvement.)

Where dmc needs improvement is in floating point code, particularly in using XMM 
registers and doing vectorization. dmc does an excellent and competitive job 
with optimization rewrites, register assignment, scheduling and detail code 
generation. There's only so much juice you can get out of those grapes.


More information about the Digitalmars-d mailing list