aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Support/StringMap.cpp
diff options
context:
space:
mode:
authorAdam Nemet <anemet@apple.com>2017-07-19 22:04:56 +0000
committerAdam Nemet <anemet@apple.com>2017-07-19 22:04:56 +0000
commit1d5f5b3b591b9400bec568d9e55dbf7d984e336d (patch)
tree80996636daba945f128c9f1813d0db2cecc64c72 /llvm/lib/Support/StringMap.cpp
parent9587bcfd79acb8a5522a17838561a3ee52a730c4 (diff)
downloadllvm-1d5f5b3b591b9400bec568d9e55dbf7d984e336d.zip
llvm-1d5f5b3b591b9400bec568d9e55dbf7d984e336d.tar.gz
llvm-1d5f5b3b591b9400bec568d9e55dbf7d984e336d.tar.bz2
[opt-viewer] Reduce memory consumption
The observation is that we have a lot of similar remarks with lots of identical strings (e.g. file paths, text from the remark). Storing a copy of each of those strings in memory is wasteful. This makes all the strings in the remark interned which maintains a single immutable instance that is referenced everywhere. I get an average 20% heap size reduction with this but it's possible that this varies with the typical length of the file paths used. (I used heapy to report the heap size.) Runtime is same or a tiny bit better. | # of files | 60 | 114 | 308 | 605 | 1370 | | # of remarks | 20K | 37K | 146K | 180K | 640K | | total file size (MB) | 22 | 51 | 219 | 202 | 1034 | |-----------------------+------+------+------+------+------| | Heap size before (MB) | 106 | 226 | 894 | 934 | 3573 | | Heap size after | 86 | 179 | 694 | 739 | 2798 | | Rate | 0.81 | 0.79 | 0.78 | 0.79 | 0.78 | |-----------------------+------+------+------+------+------| | Average remark size | 4.30 | 4.84 | 4.75 | 4.11 | 4.37 | | Mem2disk ratio | 3.91 | 3.51 | 3.17 | 3.66 | 2.71 | Differential Revision: https://reviews.llvm.org/D35534 llvm-svn: 308536
Diffstat (limited to 'llvm/lib/Support/StringMap.cpp')
0 files changed, 0 insertions, 0 deletions