aboutsummaryrefslogtreecommitdiff
path: root/disassembler_elf.h
diff options
context:
space:
mode:
authorEtienne Pierre-doray <etiennep@chromium.org>2021-04-16 18:20:33 +0000
committerCopybara-Service <copybara-worker@google.com>2021-07-25 21:11:19 -0700
commite1c6a71ae0b029b30d69960900d9bb1a1ad45945 (patch)
treed0a23cf895e7098b14d360fb8eead4982479f91f /disassembler_elf.h
parentfc058e3b20ed8f45828c24d0da6f4bfcdcf737b1 (diff)
downloadzucchini-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.h4
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);
};