Study: build times for D programs

Joseph Rushton Wakeling joseph.wakeling at webdrake.net
Thu Jul 26 15:07:54 PDT 2012


On 26/07/12 20:27, David Nadlinger wrote:
> GDC probably performs inlining by default on -O2/-O3, just like LDC does.

I was surprised that using -inline alone (without any optimization option) 
doesn't produce any meaningful improvement.  It cuts maybe 1s off the 
DMD-compiled runtime, but it's not clear to me that actually corresponds to a 
reliable difference.  Perhaps GDC just ignores the -inline flag ... ?

I suppose it's possible that this is code that does not respond well to 
inlining, although I'd have thought the obvious optimization would be to inline 
many of the object methods that are only called internally and that are called 
in a tight loop:

             do {
                   userDivergence(ratings);
                   userReputation(ratings);

                   reputationObjectOld_[] = reputationObject_[];
                   objectReputation(ratings);
                   diff = 0;
                   foreach(size_t o, Reputation rep; reputationObject_) {
                         auto aux = rep - reputationObjectOld_[o];
                         diff += aux*aux;
                   }
                   ++iterations;
             } while (diff > convergence_);

I might tweak it manually so that userDivergence(), userReputation() and 
objectReputation() are inline, and see if it makes any difference.


More information about the Digitalmars-d mailing list