Jeremy Morse via llvm-dev
2021-Mar-30 10:33 UTC
[llvm-dev] Why the binary size in trunk are smaller significantly?
Hi Chuanqi, On Tue, Mar 30, 2021 at 9:47 AM chuanqi.xcq via llvm-dev <llvm-dev at lists.llvm.org> wrote:> In a private code bases, I find that the binary size produced in llvm-11 is 60M while the size produced in trunk is 51M. > > I tried to find the patch who made this change in git log or in phabricator by keywords like `reduce`, 'size' or 'binary'. But I find nothing.Interesting -- which sections reduce in size between llvm-11 and trunk? Assuming you're using ELF/DWARF binaries, `readelf -W -S` will give you sections and sizes. Since llvm-11 branched, there were some patches [0] that improved how variable locations are represented in DWARF, I've seen some binaries where that reduced file size by 10%. That would be reflected in the .debug_loc section. There's also the constructor homing flag, passed to clang with "-Xclang -fuse-ctor-homing", I'm not sure whether it's on by default in trunk. That would show a significant reduction in the .debug_info section. [0] https://reviews.llvm.org/rG0b5a8050ea39355a3876cc6bba9383d91e224e1f -- Thanks, Jeremy
David Blaikie via llvm-dev
2021-Mar-30 16:11 UTC
[llvm-dev] Why the binary size in trunk are smaller significantly?
Yep, I'd be curious to see more data - comparisons of sections sizes (Bloaty <https://github.com/google/bloaty> is a handy tool to make comparisons simpler (though for a one off might not be worth the hassle of going and downloading/building it/etc)) & any work that could be done isolating/reducing the test case (hopefully enough that it can be shared) and verifying what differences might exist between the two compilations if there's anything other than the compiler version. On Tue, Mar 30, 2021 at 3:33 AM Jeremy Morse <jeremy.morse.llvm at gmail.com> wrote:> Hi Chuanqi, > > On Tue, Mar 30, 2021 at 9:47 AM chuanqi.xcq via llvm-dev > <llvm-dev at lists.llvm.org> wrote: > > In a private code bases, I find that the binary size produced in llvm-11 > is 60M while the size produced in trunk is 51M. > > > > I tried to find the patch who made this change in git log or in > phabricator by keywords like `reduce`, 'size' or 'binary'. But I find > nothing. > > Interesting -- which sections reduce in size between llvm-11 and > trunk? Assuming you're using ELF/DWARF binaries, `readelf -W -S` will > give you sections and sizes. > > Since llvm-11 branched, there were some patches [0] that improved how > variable locations are represented in DWARF, I've seen some binaries > where that reduced file size by 10%. That would be reflected in the > .debug_loc section. There's also the constructor homing flag, passed > to clang with "-Xclang -fuse-ctor-homing", I'm not sure whether it's > on by default in trunk. That would show a significant reduction in the > .debug_info section. > > [0] https://reviews.llvm.org/rG0b5a8050ea39355a3876cc6bba9383d91e224e1f > > -- > Thanks, > Jeremy >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210330/44e2c14d/attachment.html>