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