llvm-project/llvm/tools
Adam Nemet 817e90f11e [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
2017-07-19 22:04:59 +00:00
..
bugpoint [NFC] Remove multiple semicolons 2017-06-28 23:15:16 +00:00
bugpoint-passes [CMake] bugpoint-passes depends on intrinsics_gen 2016-11-19 02:20:59 +00:00
dsymutil [DWARF] NFC: DWARFDataExtractor combines relocs with DataExtractor. 2017-06-29 16:52:08 +00:00
gold Use emplace_back to replace size() and resize(). 2017-07-10 15:31:53 +00:00
llc [ORE] Add diagnostics hotness threshold 2017-06-30 23:14:53 +00:00
lli fix typos in comments; NFC 2017-07-11 06:04:59 +00:00
llvm-ar llvm: add llvm-dlltool support to the archiver 2017-07-18 21:26:38 +00:00
llvm-as [CMake] llvm-as depends on intrinsics_gen 2016-11-19 02:15:04 +00:00
llvm-as-fuzzer
llvm-bcanalyzer Bitcode: Include any strings added to the string table in the module hash. 2017-07-06 17:56:01 +00:00
llvm-c-test fix typos in comments and error messges; NFC 2017-07-13 06:48:39 +00:00
llvm-cat Bitcode: Add a string table to the bitcode format. 2017-04-17 17:51:36 +00:00
llvm-config [llvm-config] Don't use PATH_MAX 2017-06-01 20:51:55 +00:00
llvm-cov [llvm-cov] Add a cl::opt to control the number of threads 2017-07-11 01:23:29 +00:00
llvm-cvtres Revert "Revert "Revert "Revert "Switch external cvtres.exe for llvm's own resource library."""" 2017-07-08 03:06:10 +00:00
llvm-cxxdump Make the Error class constructor protected 2016-11-11 04:28:40 +00:00
llvm-cxxfilt c++filt: support COFF import thunks 2017-03-22 21:15:19 +00:00
llvm-diff [IR] Redesign the case iterator in SwitchInst to actually be an iterator 2017-04-12 07:27:28 +00:00
llvm-dis [CMake] llvm-dis depends on intrinsics_gen 2016-11-19 02:31:14 +00:00
llvm-dwarfdump [DWARF] Added a blank line in llvm-dwarfdump to test commit access. 2017-06-12 19:04:28 +00:00
llvm-dwp [DWARF] NFC: Collect info used by DWARFFormValue into a helper. 2017-06-26 18:43:01 +00:00
llvm-extract [llvm-extract] Add option for recursive extraction 2017-04-06 20:51:40 +00:00
llvm-go [llvm-go] parameterize $GOPATH construction 2016-07-27 03:21:51 +00:00
llvm-jitlistener Search for llvm-symbolizer binary in the same directory as argv[0], before 2016-06-09 00:53:21 +00:00
llvm-link Re-apply r302108, "IR: Use pointers instead of GUIDs to represent edges in the module summary. NFCI." 2017-05-04 18:03:25 +00:00
llvm-lto Fix dangling StringRefs found by clang-tidy misc-dangling-handle check. 2017-07-04 15:13:02 +00:00
llvm-lto2 Add missing library dependency to fix build break in llvm-lto2 2017-06-28 06:14:30 +00:00
llvm-mc sink DebugCompressionType into MC for exposing to clang 2017-06-09 00:40:19 +00:00
llvm-mc-assemble-fuzzer llvm-mc-fuzzer: add support for assembly 2017-02-27 06:22:17 +00:00
llvm-mc-disassemble-fuzzer llvm-mc-fuzzer: add support for assembly 2017-02-27 06:22:17 +00:00
llvm-mcmarkup Search for llvm-symbolizer binary in the same directory as argv[0], before 2016-06-09 00:53:21 +00:00
llvm-modextract Bitcode: Add a string table to the bitcode format. 2017-04-17 17:51:36 +00:00
llvm-mt Revert "Adding temporary debugging info to llvm-mt to solve fedora failure." 2017-07-18 03:38:04 +00:00
llvm-nm Rewrite demangle memory handling. 2017-06-30 05:38:56 +00:00
llvm-objdump [llvm-objdump] Properly print MachO aarch64 addend relocations 2017-07-13 17:03:02 +00:00
llvm-opt-report [llvm-opt-report] Fix context-sensitive lines where nothing happened 2017-01-07 20:21:17 +00:00
llvm-pdbutil [PDB] Finish and simplify TPI hashing 2017-07-18 00:33:45 +00:00
llvm-profdata [ProfileData] Add new option to dump topn hottest functions 2017-07-11 20:30:43 +00:00
llvm-readobj [llvm-readobj] Install llvm-readelf alias 2017-07-19 02:09:37 +00:00
llvm-rtdyld [ExecutionEngine] Make RuntimeDyld::MemoryManager responsible for tracking EH 2017-05-09 21:32:18 +00:00
llvm-shlib [Solaris] enable --whole-archive for shared-library build, disable --version-script for Solaris-ld 2017-07-19 16:07:51 +00:00
llvm-size llvm-size: remove leading dash in '-radix' option 2016-12-23 23:55:08 +00:00
llvm-split [CMake] llvm-split depends on intrinsics_gen 2016-11-18 23:20:38 +00:00
llvm-stress [IR] Make use of Type::isPtrOrPtrVectorTy/isIntOrIntVectorTy/isFPOrFPVectorTy to shorten code. NFC 2017-07-09 07:04:00 +00:00
llvm-strings llvm-strings: remove default for -Wcovered-switch-default 2017-01-21 02:52:29 +00:00
llvm-symbolizer Add a verbose/human readable mode to llvm-symbolizer to investigate discriminators and other line table/backtrace features 2017-01-31 22:19:38 +00:00
llvm-xray Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
lto Spelling mistakes in comments. NFCI. 2017-03-30 12:59:53 +00:00
msbuild Create msbuild only when using MSVC 2017-03-16 20:24:14 +00:00
obj2yaml [WebAssembly] Expose the offset of each data segment 2017-07-12 00:24:54 +00:00
opt [PM] Another post-commit fix in NewPMDriver 2017-07-11 11:17:44 +00:00
opt-viewer [opt-viewer] Reduce memory consumption by another 20-25% 2017-07-19 22:04:59 +00:00
sancov [sancov] Fix broken links and displaced coloring in coverage-report-server.py 2017-03-20 14:06:04 +00:00
sanstats [sanstats] Print the correct line information. 2017-07-13 00:49:03 +00:00
verify-uselistorder [CMake] verify-uselistorder depends on intrinsics_gen 2016-11-18 23:30:58 +00:00
xcode-toolchain [CMake] Minor fix to regex in r279152 2016-08-18 21:36:36 +00:00
yaml2obj [yaml2obj][ELF] Add support for program headers 2017-07-19 20:38:46 +00:00
CMakeLists.txt Fixup r271533, or check-clang didn't find llvm-lto as the target. 2016-06-02 20:39:24 +00:00
LLVMBuild.txt Rename llvm-pdbdump -> llvm-pdbutil. 2017-06-09 20:46:17 +00:00