What happened to phobos compile time?

Andrei Alexandrescu SeeWebsiteForEmail at erdani.com
Tue Aug 4 15:04:51 UTC 2020

cc Walter

The functions Ch and Maj are the culprits:


Each is responsible for about half of the slowdown. If those are not 
inlined the build speed is back to the previous.

The templates are only instantiated with uint and ulong, but this didn't 
help any:

uint Maj(uint x, uint y, uint z) { return (x & y) | (z & (x ^ y)); }
uint Ch(uint x, uint y, uint z) { return z ^ (x & (y ^ z)); }
ulong Maj(ulong x, ulong y, ulong z) { return (x & y) | (z & (x ^ y)); }
ulong Ch(ulong x, ulong y, ulong z) { return z ^ (x & (y ^ z)); }

In turn, these functions are called from the inline functions 
T_SHA2_0_15 and T_SHA2_16_79. Turning inlining off on T_SHA2_16_79 
instead again brings build speed back.

Fix: https://github.com/dlang/phobos/pull/7577

More information about the Digitalmars-d mailing list