summaryrefslogtreecommitdiff
path: root/db
diff options
context:
space:
mode:
authorwzk784533 <wzk784533@163.com>2020-07-11 13:44:11 +0800
committerwzk784533 <wzk784533@163.com>2020-07-11 13:44:11 +0800
commit28602d36254263127c0e1b90334614abc1ee0c83 (patch)
treedea2fff34ae21555a280afcf19b1e0fd0ca12c5b /db
parent5bd5f0f67a5eb0ed74c16b3ae847ec4e5bc3e412 (diff)
downloadleveldb-28602d36254263127c0e1b90334614abc1ee0c83.tar.gz
avoid unnecessary memory copy
Diffstat (limited to 'db')
-rw-r--r--db/builder.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/db/builder.cc b/db/builder.cc
index 943e857..fe5cde1 100644
--- a/db/builder.cc
+++ b/db/builder.cc
@@ -30,11 +30,14 @@ Status BuildTable(const std::string& dbname, Env* env, const Options& options,
TableBuilder* builder = new TableBuilder(options, file);
meta->smallest.DecodeFrom(iter->key());
+ Slice key;
for (; iter->Valid(); iter->Next()) {
- Slice key = iter->key();
- meta->largest.DecodeFrom(key);
+ key = iter->key();
builder->Add(key, iter->value());
}
+ if(!key.empty()) {
+ meta->largest.DecodeFrom(key);
+ }
// Finish and check for builder errors
s = builder->Finish();