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:

https://github.com/dlang/phobos/blob/master/std/digest/sha.d#L318

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