OSDN Git Service

[opt-viewer] Reduce memory consumption
authorAdam Nemet <anemet@apple.com>
Wed, 19 Jul 2017 22:04:56 +0000 (22:04 +0000)
committerAdam Nemet <anemet@apple.com>
Wed, 19 Jul 2017 22:04:56 +0000 (22:04 +0000)
commit53ff09e06fddfe5909f52784d6a0b9d42d389f43
treeafde1d9cb3392232dcdbfe398cbbb3660756bf2e
parentacdb8f988e3c545b7eae536a8c81096a43dfbd7e
[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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308536 91177308-0d34-0410-b5e6-96231b3b80d8
tools/opt-viewer/optrecord.py