On Tue, 19 Oct 2010 06:26:23 +0400, Nick Sabalausky <a...@a.a> wrote:
"Denis Koroskin" <2kor...@gmail.com> wrote in message
news:op.vkshh4bdo7c...@korden-pc...
On Tue, 19 Oct 2010 00:41:54 +0400, Nick Sabalausky <a...@a.a> wrote:
"Rainer Schuetze" <r.sagita...@gmx.de> wrote in message
news:i9f2ce$30r...@digitalmars.com...
I've used ddmd as a medium sized project for testing. It has more than
400
files with most modules mutually importing each other. Some remarks:
- compilation speed is a lot worse, even when compared to what you
would
expect from a similar C/C++ project. It takes almost 8 minutes to
compile
ddmd on my system with single file compilation, while the standard
compilation takes about 10 seconds.
Whaa...? Standard compilation of ddmd takes me a full two minutes.
Do you compile the code on 486 or something? :)
Heh :) Compared to your and Rainer's systems it probably might as well
be.
Running the build script takes 7.967 seconds for me (timed with timeit,
part of the Windows Server 2003 Resource Kit Tools).
My guess is it may be the multi-threaded "process multiple modules in
parallel" optimization. DDMD does have a *lot* of source files. And I'm
on a
single-core (yea, yea, I know, but it works for me and I have no money).
I'm curious, is it possible for you or Rainer to time it running dmd in a
"force single-core" mode? Ideally using the main system/OS core (if there
even is one)? I would expect a normal out-of-the-box dmd would be
noticably
faster for you two just because of that multi-thread/core optimization
and
the cores themselves just simply being faster, but 120 sec vs 8 sec still
seems an excessive difference.
And then considering also, outside of dmd bugs, I've never once had any D
program besides ddmd take more than a few seconds - despite the fact that
much of what I do complie is fairly template/mixin/ctfe-heavy, and ddmd
appears to use very little (if any) of that - it's certainly still a
conceivable speed difference, but it does make me wonder if something
else
might be going on.
BTW, anyone know of an easy way to check how much time in a process is
spent
waiting on disk IO? It's entirely possible that my disk is just
fragmented
all to hell.
dmd doesn't use multiple core for anything BUT asynchronous reading from
disk. Everything else is done is a single thread. I don't think it has
THAT big of impact, but I'll try to recompile with all the cores disabled.