aboutsummaryrefslogtreecommitdiff
path: root/zenstore/compactcas.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2022-04-01 08:41:51 +0200
committerDan Engelbrecht <[email protected]>2022-04-01 09:07:21 +0200
commitac573e90a5698c64451a99beb1a14d00540aa835 (patch)
treef246b21daef1b8ce99abe275cbda96a481531467 /zenstore/compactcas.cpp
parentcall Initialize before replay on caslog (diff)
downloadzen-ac573e90a5698c64451a99beb1a14d00540aa835.tar.xz
zen-ac573e90a5698c64451a99beb1a14d00540aa835.zip
reserve space for log entries before replay
Diffstat (limited to 'zenstore/compactcas.cpp')
-rw-r--r--zenstore/compactcas.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/zenstore/compactcas.cpp b/zenstore/compactcas.cpp
index 1dd1a3906..1ade002d8 100644
--- a/zenstore/compactcas.cpp
+++ b/zenstore/compactcas.cpp
@@ -282,6 +282,7 @@ namespace {
CasLog.Open(SlogPath, CasLogFile::EMode::kRead);
if (CasLog.Initialize())
{
+ Entries.reserve(CasLog.GetLogCount());
CasLog.Replay([&](const CasDiskIndexEntry& Record) { Entries.push_back(Record); });
}
}
@@ -359,6 +360,7 @@ namespace {
});
if (LegacyCasLog.Initialize())
{
+ LegacyDiskIndex.reserve(LegacyCasLog.GetLogCount());
LegacyCasLog.Replay([&](const LegacyCasDiskIndexEntry& Record) {
std::string InvalidEntryReason;
if (Record.Flags & LegacyCasDiskIndexEntry::kTombstone)
@@ -1410,9 +1412,11 @@ CasContainerStrategy::MakeIndexSnapshot()
{
TCasLogFile<CasDiskIndexEntry> OldCasLog;
OldCasLog.Open(STmplogPath, CasLogFile::EMode::kRead);
+ Records.reserve(OldCasLog.GetLogCount());
OldCasLog.Replay([&](const CasDiskIndexEntry& Record) { Records.push_back(Record); });
}
{
+ Records.reserve(Records.size() + m_CasLog.GetLogCount());
m_CasLog.Replay([&](const CasDiskIndexEntry& Record) { Records.push_back(Record); });
}
@@ -2316,6 +2320,7 @@ TEST_CASE("compactcas.legacyconversion")
{
TCasLogFile<CasDiskIndexEntry> CasLog;
CasLog.Open(SlogPath, CasLogFile::EMode::kRead);
+ LogEntries.reserve(CasLog.GetLogCount());
CasLog.Replay([&](const CasDiskIndexEntry& Record) { LogEntries.push_back(Record); });
}
TCasLogFile<LegacyCasDiskIndexEntry> LegacyCasLog;