Skip to content

Commit

Permalink
L0 flush: avoid short-lived allocation when checking key_range empty (#…
Browse files Browse the repository at this point in the history
…8154)

We only use `keys` to check if it's empty so we can bail out early. No
need to collect the keys for that.

Found this while doing research for
#7418
  • Loading branch information
problame authored and conradludgate committed Jun 27, 2024
1 parent ece7e8f commit 9d449fa
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions pageserver/src/tenant/storage_layer/inmemory_layer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -622,18 +622,16 @@ impl InMemoryLayer {

let end_lsn = *self.end_lsn.get().unwrap();

let keys: Vec<_> = if let Some(key_range) = key_range {
let key_count = if let Some(key_range) = key_range {
inner
.index
.iter()
.filter(|(k, _)| key_range.contains(k))
.map(|(k, m)| (k.to_i128(), m))
.collect()
.count()
} else {
inner.index.iter().map(|(k, m)| (k.to_i128(), m)).collect()
inner.index.len()
};

if keys.is_empty() {
if key_count == 0 {
return Ok(None);
}

Expand Down

0 comments on commit 9d449fa

Please sign in to comment.