Profiling DMD's Compilation Time with dmdprof

Joakim dlang at joakim.fea.st
Thu Nov 8 07:53:26 UTC 2018


On Thursday, 8 November 2018 at 07:41:58 UTC, Manu wrote:
> On Wed, Nov 7, 2018 at 10:30 PM Joakim via 
> Digitalmars-d-announce <digitalmars-d-announce at puremagic.com> 
> wrote:
>>
>> On Thursday, 8 November 2018 at 04:16:44 UTC, Manu wrote:
>> > On Tue, Nov 6, 2018 at 10:05 AM Vladimir Panteleev via 
>> > Digitalmars-d-announce 
>> > <digitalmars-d-announce at puremagic.com> wrote:
>> >> [...]
>> >
>> > "Indeed, a clean build of DMD itself (about 170’000 lines of 
>> > D and 120’000 lines of C/C++) takes no longer than 4 seconds 
>> > to build on a rather average developer machine."
>> >
>> > ...what!? DMD takes me... (compiling) ... 1 minute 40 
>> > seconds to build! And because DMD does all-files-at-once 
>> > compilation, rather than separate compilation for each 
>> > source file, whenever you change just one line in one file, 
>> > you incur that entire build time, every time, because it 
>> > can't just rebuild the one source file that changed. You 
>> > also can't do multi-processor builds with all-in-one build 
>> > strategies.
>> >
>> > 4 seconds? That's just untrue. D is actually kinda slow 
>> > these days... In my experience it's slower than modern C++ 
>> > compilers by quite a lot.
>>
>> It sounds like you're not using "a rather average developer 
>> machine" then, as there's no way DMD should be that slow to 
>> build on a core i5 or better:
>>
>> https://forum.dlang.org/post/rqukhkpxcvgiefrdcvdq@forum.dlang.org
>
> I'm on an i7 with 8 threads and plenty of ram... although 
> threads are useless, since DMD only uses one ;)

Running Windows XP? ;) That does sound like Windows though, as I 
do remember being surprised how long dmd took to build on Win7 
when I tried it 8-9 years back. I still don't think the toolchain 
should be _that_ much slower than linux though.

Btw, the extra cores are _not_ useless for the DMD backend, which 
has always used separate compilation, whether written in C++ or D.


More information about the Digitalmars-d-announce mailing list