Similarly to bpo-40145, I've tweaked build options to reduce the size of the
binary.
This patch turns on (for release builds) Whole Program Optimization, MinSpace
optimization, /Ob2 AnySuitable function inlining, /Zo (so that people can still
debug it when lots of code has been optimized out), /OPT:REF dead code
elimination, /OPT:ICF COMDAT folding, Link Time Code Generation, and DebugFull
debugging information creation.
For debug builds, it enables all of that, except instead of the MinSpace
optimization, it's only /Ob2 with custom optimization. My intent is to not
optimize any asserts or similar checks, while still getting the benefit of
dead and duplicate code elimination.
_overlapped.pyd 32 bit unimproved release size: 31KB
_overlapped.pyd 32 bit improved release size: 29KB
size reduction: -3KB
% size reduction: 10%
_overlapped_d.pyd 32 bit unimproved release size: 55KB
_overlapped_d.pyd 32 bit improved release size: 34KB
size reduction: -21KB
% size reduction: 38%
_overlapped.pyd 64 bit unimproved release size: 39KB
_overlapped.pyd 64 bit improved release size: 36KB
size reduction: -3KB
% size reduction: 8%
_overlapped_d.pyd 64 bit unimproved release size: 74KB
_overlapped_d.pyd 64 bit improved release size: 41KB
size reduction: -33KB
% size reduction: 45%
If this patch is merged, and all 7 million (estimated) Python developers update their installation, I calculate that I just saved the PSF 21GB worth of bandwidth costs :)
|