Skip to content

Commit 3aeb55b

Browse files
timfennisclaude
andcommitted
perf(vm): preallocate map literal HashMap with known pair count 🗺️
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
1 parent 5c896d4 commit 3aeb55b

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
let total = 0;
2+
for _ in 0..50_000 {
3+
let m = %{
4+
1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8,
5+
9: 9, 10: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16,
6+
17: 17, 18: 18, 19: 19, 20: 20, 21: 21, 22: 22, 23: 23, 24: 24,
7+
25: 25, 26: 26, 27: 27, 28: 28, 29: 29, 30: 30, 31: 31, 32: 32
8+
};
9+
total += m[1];
10+
}
11+
print(total);

ndc_vm/src/vm.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ impl Vm {
351351
None
352352
};
353353
let flat = self.stack.split_off(self.stack.len() - pairs * 2);
354-
let mut map = HashMap::new();
354+
let mut map = HashMap::with_capacity(pairs);
355355
let mut flat_iter = flat.into_iter();
356356
for _ in 0..pairs {
357357
let key = flat_iter.next().expect("expected key");

0 commit comments

Comments
 (0)