diff options
author | wzk784533 <wzk784533@163.com> | 2020-07-11 13:44:11 +0800 |
---|---|---|
committer | wzk784533 <wzk784533@163.com> | 2020-07-11 13:44:11 +0800 |
commit | 28602d36254263127c0e1b90334614abc1ee0c83 (patch) | |
tree | dea2fff34ae21555a280afcf19b1e0fd0ca12c5b /db | |
parent | 5bd5f0f67a5eb0ed74c16b3ae847ec4e5bc3e412 (diff) | |
download | leveldb-28602d36254263127c0e1b90334614abc1ee0c83.tar.gz |
avoid unnecessary memory copy
Diffstat (limited to 'db')
-rw-r--r-- | db/builder.cc | 7 |
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(); |