Tweak on IsTrivialMove() (#11467)

Summary:
`output_level_` and `number_levels_` are not changing in iteration of `inputs_` files.

Moving the check out of `for` loop could slightly improve performance.

It is easier to review when ignore whitespace changes.

Pull Request resolved: https://github.com/facebook/rocksdb/pull/11467

Reviewed By: cbi42

Differential Revision: D46155962

Pulled By: ajkr

fbshipit-source-id: 45ec80b13152b3bed7305e6f707cb9b187d5f315
oxigraph-main
Soli 2 years ago committed by Facebook GitHub Bot
parent 23f4e9ad63
commit de1dd4ca19
  1. 3
      .gitignore
  2. 35
      db/compaction/compaction.cc

3
.gitignore vendored

@ -95,4 +95,5 @@ fuzz/crash-*
cmake-build-* cmake-build-*
third-party/folly/ third-party/folly/
.cache .cache
*.sublime-*

@ -486,26 +486,25 @@ bool Compaction::IsTrivialMove() const {
// assert inputs_.size() == 1 // assert inputs_.size() == 1
std::unique_ptr<SstPartitioner> partitioner = CreateSstPartitioner(); if (output_level_ + 1 < number_levels_) {
std::unique_ptr<SstPartitioner> partitioner = CreateSstPartitioner();
for (const auto& file : inputs_.front().files) { for (const auto& file : inputs_.front().files) {
std::vector<FileMetaData*> file_grand_parents; std::vector<FileMetaData*> file_grand_parents;
if (output_level_ + 1 >= number_levels_) { input_vstorage_->GetOverlappingInputs(output_level_ + 1, &file->smallest,
continue; &file->largest,
} &file_grand_parents);
input_vstorage_->GetOverlappingInputs(output_level_ + 1, &file->smallest, const auto compaction_size =
&file->largest, &file_grand_parents); file->fd.GetFileSize() + TotalFileSize(file_grand_parents);
const auto compaction_size = if (compaction_size > max_compaction_bytes_) {
file->fd.GetFileSize() + TotalFileSize(file_grand_parents);
if (compaction_size > max_compaction_bytes_) {
return false;
}
if (partitioner.get() != nullptr) {
if (!partitioner->CanDoTrivialMove(file->smallest.user_key(),
file->largest.user_key())) {
return false; return false;
} }
if (partitioner.get() != nullptr) {
if (!partitioner->CanDoTrivialMove(file->smallest.user_key(),
file->largest.user_key())) {
return false;
}
}
} }
} }

Loading…
Cancel
Save