Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.
Merged
Prev Previous commit
Next Next commit
Remove unnecessary loop when calculating maximum memory usage
  • Loading branch information
koute committed Jan 25, 2023
commit 223bc9b5664dba1bb53147b50bfc00eaefa68507
35 changes: 6 additions & 29 deletions primitives/trie/src/cache/shared_cache.rs
Original file line number Diff line number Diff line change
Expand Up @@ -625,36 +625,13 @@ impl<H: Hasher> SharedTrieCache<H> {
let mut node_cache_inline_budget = (node_cache_budget as f32 * 0.70) as usize;

// Calculate how much memory the maps will be allowed to hold inline given our budget.
let mut value_cache_max_inline_size;
loop {
// The map is resized in powers of two, so we'll almost certainly blow our inline
// budget.
value_cache_max_inline_size =
SharedValueCacheMap::<H::Out>::memory_usage_for_memory_budget(
value_cache_inline_budget,
);

if value_cache_max_inline_size > value_cache_inline_budget {
// Lower our budget and try again.
value_cache_inline_budget = (value_cache_inline_budget as f32 * 0.90) as usize;
} else {
break
}
}

let mut node_cache_max_inline_size;
loop {
node_cache_max_inline_size =
SharedNodeCacheMap::<H::Out>::memory_usage_for_memory_budget(
node_cache_inline_budget,
);
let value_cache_max_inline_size =
SharedValueCacheMap::<H::Out>::memory_usage_for_memory_budget(
value_cache_inline_budget,
);

if node_cache_max_inline_size > node_cache_inline_budget {
node_cache_inline_budget *= (node_cache_inline_budget as f32 * 0.90) as usize;
} else {
break
}
}
let node_cache_max_inline_size =
SharedNodeCacheMap::<H::Out>::memory_usage_for_memory_budget(node_cache_inline_budget);

// And this is how much data we'll at most keep on the heap for each cache.
let value_cache_max_heap_size = value_cache_budget - value_cache_max_inline_size;
Expand Down