From 22701346deec8dc7a5818b5a129f1ffba247fc2f Mon Sep 17 00:00:00 2001 From: "Raphael S. Carvalho" Date: Sat, 2 Sep 2017 21:03:15 -0300 Subject: [PATCH] sstables/stcs: avoid needless copy of bucket in get_buckets() In addition, remove bucket by iterator which is faster. Signed-off-by: Raphael S. Carvalho Message-Id: <20170903000315.16338-1-raphaelsc@scylladb.com> --- sstables/size_tiered_compaction_strategy.hh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sstables/size_tiered_compaction_strategy.hh b/sstables/size_tiered_compaction_strategy.hh index a65e531f63..8ed5a5dd6d 100644 --- a/sstables/size_tiered_compaction_strategy.hh +++ b/sstables/size_tiered_compaction_strategy.hh @@ -191,17 +191,17 @@ size_tiered_compaction_strategy::get_buckets(const std::vector bucket = entry.second; - size_t old_average_size = entry.first; + for (auto it = buckets.begin(); it != buckets.end(); it++) { + size_t old_average_size = it->first; if ((size > (old_average_size * _options.bucket_low) && size < (old_average_size * _options.bucket_high)) || (size < _options.min_sstable_size && old_average_size < _options.min_sstable_size)) { + auto bucket = std::move(it->second); size_t total_size = bucket.size() * old_average_size; size_t new_average_size = (total_size + size) / (bucket.size() + 1); bucket.push_back(pair.first); - buckets.erase(old_average_size); + buckets.erase(it); buckets.insert({ new_average_size, std::move(bucket) }); found = true;