Profiling DMD's Compilation Time with dmdprof

Joakim dlang at joakim.fea.st
Thu Nov 8 08:52:12 UTC 2018


On Thursday, 8 November 2018 at 08:29:28 UTC, Manu wrote:
> On Thu, Nov 8, 2018 at 12:10 AM Joakim via 
> Digitalmars-d-announce <digitalmars-d-announce at puremagic.com> 
> wrote:
>>
>> On Thursday, 8 November 2018 at 07:54:56 UTC, Manu wrote:
>> > On Wed, Nov 7, 2018 at 10:30 PM Vladimir Panteleev via 
>> > Digitalmars-d-announce 
>> > <digitalmars-d-announce at puremagic.com> wrote:
>> >>
>> >> On Thursday, 8 November 2018 at 06:08:20 UTC, Vladimir 
>> >> Panteleev wrote:
>> >> > It was definitely about 4 seconds not too long ago, a few 
>> >> > years at most.
>> >>
>> >> No, it's still 4 seconds.
>> >>
>> >> digger --offline --config-file=/dev/null -j auto -c 
>> >> local.cache=none build     7.31s user 1.51s system 203% cpu 
>> >> 4.340 total
>> >>
>> >> > It does seem to take more time now; I wonder why.
>> >>
>> >> If it takes longer, then it's probably because it's being 
>> >> built in one CPU core, or in the release build.
>> >
>> > https://youtu.be/msWuRlD3zy0
>>
>> Lol, I saw that link and figured it was either some comedy 
>> video, like the Python ones Walter sometimes posts, or you 
>> were actually showing us how long it takes. Pretty funny to 
>> see the latter.
>
> It's not so funny when every one-line tweak burns 2 minutes of 
> my life away.

I was laughing that you actually proved your point with direct 
video evidence, obviously it's sad that it takes so long.

>> > DMD only builds with one core, since it builds altogether.
>>
>> Yes, but your build time is unusually long even with one core. 
>> Are the D backend and frontend at least built in parallel to 
>> each other?
>
> That doesn't matter, you can clearly see the backend built in 
> less than 2 seconds.

The C/C++ files in the beginning are built very fast, but the D 
files in the backend appear to take much longer, kicking in at 
1:18 of your video and then the next compilation step starts at 
1:40.

I suspect part of the problem is that your build is being done 
completely serially, even for separate compilation. I have no 
experience with VS, so I don't know why that is.

>> It doesn't seem to be even doing that, though they're separate 
>> invocations of DMD.
>
> I didn't configure the build infrastructure!

Maybe you can? I have no experience with VS, but surely it has 
some equivalent of ninja -j5?

>> > And all builds are release builds... what good is a debug
>> > build? DMD
>> > is unbelievably slow in debug. If it wasn't already slow
>> > enough... if
>> > I try and build with a debug build, it takes closer to 5
>> > minutes.
>> >
>> > I suspect one part of the problem is that DMD used to be 
>> > built with a C compiler, and now it's built with DMD... it 
>> > really should be built with LDC at least?
>>
>> Could be part of the problem on Windows, dunno.
>
> Well... ffs... people need to care about this! >_<

I agree that the official release of DMD for Windows should be 
faster, and we should be building it with ldc... if that's the 
problem.


More information about the Digitalmars-d-announce mailing list