summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2010-11-30 20:26:45 +0000
committerTed Kremenek <kremenek@apple.com>2010-11-30 20:26:45 +0000
commitdbd89971ffb3a222dc91513585e8d6b5bc7882db (patch)
tree4f4f09504361d7752f9316fd60e34e7cdefaf060 /llvm/lib
parent92e3718b135656bc0fe7c834b56d69ed3d2a8639 (diff)
downloadbcm5719-llvm-dbd89971ffb3a222dc91513585e8d6b5bc7882db.tar.gz
bcm5719-llvm-dbd89971ffb3a222dc91513585e8d6b5bc7882db.zip
Performance optimization on ImmutableMap/ImmutableSet:
- Use a DenseSet instead of a FoldingSet to cache canonicalized nodes. This reduces the overhead of double-hashing. - Use reference counts in ImutAVLTree to much more aggressively recover tree nodes that are no longer usable. We can generate many transient nodes while using add() and remove() on ImmutableSet/ImmutableMaps to generate a final set/map. For the clang static analyzer (the main client of these data structures), this results in a slight speedup (0.5%) when analyzing sqlite3, but much more importantly results in a 30-60% reduction in peak memory usage when the analyzer is analyzing a given function in a file. On average that's about a ** 44% reduction ** in the memory footprint of the static analyzer. llvm-svn: 120459
Diffstat (limited to 'llvm/lib')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud