Please try rdmd on large projects

Nick Sabalausky a at a.a
Thu Mar 1 21:26:04 PST 2012


"Andrei Alexandrescu" <SeeWebsiteForEmail at erdani.org> wrote in message 
news:jhugqd$26v0$1 at digitalmars.com...
> Hello,
>
>
> I just submitted 
> (https://github.com/D-Programming-Language/tools/commit/c77b870fdc5674d7434b03d1767ba831eaac25b1) 
> a change to rdmd that runs one thread per stat when comparing file dates, 
> using David's excellent std.parallelism.
>
> In my experiment the change introduces no additional lag on small projects 
> and works 10-15% faster on moderate projects (couple dozen deps).
>
> Could someone try rdmd against some larger projects and assess its 
> behavior and speed?
>
>

Finally got a change to try this. The projects probably aren't as big as 
what you had in mind, but I tried:

rdmd 0124c6b61a VS rdmd 75f292fffd

Compiling:

- Compiling all of Goldie's targets with DMD 2.058
- Attempting to compile DDMD with DMD 2.053 (the build failed pretty 
quickly, but not until after RDMD would DMD for the second time)

On:

- 32-bit single-core Linux, using a HDD
- 32-bit single-core Windows, using a HDD
- 64-bit dual-core Linux, using a USB Flash drive

On all combinations I got no difference between the two versions of RDMD 
(which is good in the case of the single-core machines, of course). The once 
slight exception was that compiling Goldie's targets on the 64-bit dual-core 
machine was about 1-2% faster with the newer RDMD (75f292fffd) compared with 
the older (0124c6b61a). Could just be noise, though.

There was one weird anomaly: When compiling the Goldie targets on the 64-bit 
dual-core, I compiled all of Goldie 8 times with each of the two RDMDs. On 
*ONE* of the compilations with the newer RDMD, one of the targets failed to 
build with a DMD ICE:

dmd: ../ztc/aa.c:423: void AArray::rehash_x(aaA*, aaA**, size_t): Assertion 
`0' failed.

I hadn't touched anything during or in-between compilations.




More information about the Digitalmars-d-announce mailing list