diff options
author | Etienne Pierre-doray <etiennep@chromium.org> | 2021-04-16 18:20:33 +0000 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2021-07-25 21:11:19 -0700 |
commit | e1c6a71ae0b029b30d69960900d9bb1a1ad45945 (patch) | |
tree | d0a23cf895e7098b14d360fb8eead4982479f91f /disassembler_elf.h | |
parent | fc058e3b20ed8f45828c24d0da6f4bfcdcf737b1 (diff) | |
download | zucchini-e1c6a71ae0b029b30d69960900d9bb1a1ad45945.tar.gz |
[zucchini] Use deque to store rel32_locations.
An optimization to reduce zucchini peak memory footprint.
MakeReadRel32 bring peak memory unnecessarily high due to std::vector
allocation heuristic, along with shrink_to_fit which temporarily
forces additional allocation: in the order of 32MB+19MB while only
19MB was needed.
deque puts less memory pressure than vector since it doesn't have
contiguous requirement and shrink_to_fit can be done in-place.
deque
Zucchini.PeakPagefileUsage 738876 KiB
Zucchini.PeakPagefileUsageChange 717436 KiB
Zucchini.PeakWorkingSetSize 632284 KiB
Zucchini.PeakWorkingSetSizeChange 623464 KiB
Zucchini.TotalTime 9.40955 s
vector
Zucchini.PeakPagefileUsage 755252 KiB
Zucchini.PeakPagefileUsageChange 733820 KiB
Zucchini.PeakWorkingSetSize 632660 KiB
Zucchini.PeakWorkingSetSizeChange 624616 KiB
Zucchini.TotalTime 10.3224 s
Bug: 1194281
Change-Id: Ic5a7f529d4465241990dbe27a485a67b32ab44b1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2830864
Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org>
Reviewed-by: Samuel Huang <huangs@chromium.org>
Cr-Commit-Position: refs/heads/master@{#873383}
NOKEYCHECK=True
GitOrigin-RevId: 52f908bb699f8d106a1c43e10257759cce90500d
Diffstat (limited to 'disassembler_elf.h')
-rw-r--r-- | disassembler_elf.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/disassembler_elf.h b/disassembler_elf.h index e279c29..60d524c 100644 --- a/disassembler_elf.h +++ b/disassembler_elf.h @@ -7,6 +7,7 @@ #include <stdint.h> +#include <deque> #include <memory> #include <string> #include <vector> @@ -178,7 +179,8 @@ class DisassemblerElfIntel : public DisassemblerElf<Traits> { private: // Sorted file offsets of rel32 locations. - std::vector<offset_t> rel32_locations_; + // Using std::deque to reduce peak memory footprint. + std::deque<offset_t> rel32_locations_; DISALLOW_COPY_AND_ASSIGN(DisassemblerElfIntel); }; |