aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Support/StringMap.cpp
diff options
context:
space:
mode:
authorAdam Nemet <anemet@apple.com>2017-07-19 22:04:59 +0000
committerAdam Nemet <anemet@apple.com>2017-07-19 22:04:59 +0000
commit817e90f11e13428fa32e613be62cb6bdb499d934 (patch)
tree75fe80f0f56d712b89cef6824c68638040cd91e1 /llvm/lib/Support/StringMap.cpp
parent37d18f1d8a876864dc39e15d5548d335c12384c9 (diff)
downloadllvm-817e90f11e13428fa32e613be62cb6bdb499d934.zip
llvm-817e90f11e13428fa32e613be62cb6bdb499d934.tar.gz
llvm-817e90f11e13428fa32e613be62cb6bdb499d934.tar.bz2
[opt-viewer] Reduce memory consumption by another 20-25%
The Args field of the remark which consists of a list of mappings in YAML is translated into a list of (small) dicts on Python. An empty dict is 280 bytes on my system so we can save memory by using a tuple of tuples instead. Making a tuple of tuples rather than a list of tuples allows Args to be shared with the key of the remark. This is actually an even greater saving. (Keys are alive throughout the entire run in all_remarks.) Here are a few opt-stats runs with different input sizes while measuring heap usage with heapy. Avg remark size is simply estimated as heap-size / # of remarks: | # of files | 60 | 114 | 308 | 605 | 1370 | | # of remarks | 20K | 37K | 146K | 180K | 640K | | total file size (MB) | 22 | 51 | 219 | 202 | 1034 | |------------------------+------+------+------+------+------| | Avg remark size before | 4339 | 4792 | 4761 | 4096 | 4607 | | Avg remark size after | 3446 | 3641 | 3567 | 3146 | 3347 | | Rate | 0.79 | 0.76 | 0.75 | 0.77 | 0.73 | Differential Revision: https://reviews.llvm.org/D35611 llvm-svn: 308538
Diffstat (limited to 'llvm/lib/Support/StringMap.cpp')
0 files changed, 0 insertions, 0 deletions