On the performance of building D programs

Andrej Mitrovic andrej.mitrovich at gmail.com
Fri Apr 5 03:18:11 PDT 2013


On 4/5/13, Vladimir Panteleev <vladimir at thecybershadow.net> wrote:
> it must run dmd with -v -o-, and read its verbose output.

IIRC xfbuild used to work around this by both reading the verbose
output and simultaneously building. In other words it used 'dmd -deps'
without the -o- switch. There's a function called compileAndTrackDeps
which did this, but the entire codebase was very hacky which has lead
me to abandon the port.

Note that using pipes instead of File I/O to read the verbose output
of DMD can speed up the entire building process (the new std.process
comes in handy for this).

However I've come to the same conclusions as you, DMD could do all of
this on its own in one process invocation. It won't have to re-parse
and re-process any dependencies more than once, which could be a
significant boost in speed.

Plus, it would be a boon for people new to D who expect things to work
in a modern way (no nasty linker errors).

Preferably we could introduce another switch -rxp which is used to
exclude entire packages, e.g.:

dmd -r -rx=somemodule.d -rxp=some.package (The = were just added for
readability)


More information about the Digitalmars-d mailing list