This is an archive of the discontinued LLVM Phabricator instance.

[DomTree] Use SmallVector<DomTreeNodeBase *, 4> instead of std::vector.
ClosedPublic

Authored by fhahn on Sep 8 2020, 11:58 AM.

Details

Summary

Currentl DomTreeNodeBase is using std::vectot to store it's children.
Using SmallVector should be more efficient in terms of compile-time.

A size of 4 seems to be the sweet-spot in terms of compile-time,
according to

http://llvm-compile-time-tracker.com/compare.php?from=9933188c90615c9c264ebb69117f09726e909a25&to=d7a801d027648877b20f0e00e822a7a64c58d976&stat=instructions

This results in the following geomean improvements

                       geomean insts     max rss
O3                          -0.31 %       +0.02 %
ReleaseThinLTO              -0.35 %       -0.12 %
ReleaseLTO                  -0.28 %       -0.12 %
O0                          -0.06 %       -0.02 %
NewPM O3                    -0.36 %       +0.05 %
ReleaseThinLTO (link only)  -0.44 %       -0.10 %
ReleaseLTO-g (link only):   -0.32 %       -0.03 %

I am not sure if there's any other benefits of using std::vector over
SmallVector.

Diff Detail

Event Timeline

fhahn created this revision.Sep 8 2020, 11:58 AM
Herald added a project: Restricted Project. · View Herald TranscriptSep 8 2020, 11:58 AM
Herald added a subscriber: dexonsmith. · View Herald Transcript
fhahn requested review of this revision.Sep 8 2020, 11:58 AM
asbirlea accepted this revision.Sep 8 2020, 12:21 PM

LGTM.

This revision is now accepted and ready to land.Sep 8 2020, 12:21 PM
kuhar accepted this revision.Sep 8 2020, 12:39 PM

Thanks for the numbers. LGTM.