(
bplus: &BPlusTreeMap<usize, usize>,
_btree: &BTreeMap<usize, usize>,
tree_size: usize,
sample_size: usize,
)
| 96 | } |
| 97 | |
| 98 | fn benchmark_insert( |
| 99 | bplus: &BPlusTreeMap<usize, usize>, |
| 100 | _btree: &BTreeMap<usize, usize>, |
| 101 | tree_size: usize, |
| 102 | sample_size: usize, |
| 103 | ) { |
| 104 | println!("➕ INSERT Performance:"); |
| 105 | |
| 106 | // Generate new keys for insertion (beyond existing range) |
| 107 | let new_keys: Vec<usize> = (tree_size..tree_size + sample_size).collect(); |
| 108 | |
| 109 | // Create fresh trees for insertion testing |
| 110 | let capacity = bplus.capacity; |
| 111 | let mut bplus_copy = BPlusTreeMap::new(capacity).unwrap(); |
| 112 | let mut btree_copy = BTreeMap::new(); |
| 113 | |
| 114 | // Pre-populate with original data |
| 115 | for i in 0..tree_size { |
| 116 | bplus_copy.insert(i, i * 2); |
| 117 | btree_copy.insert(i, i * 2); |
| 118 | } |
| 119 | |
| 120 | // Benchmark BPlusTreeMap insert |
| 121 | let start = Instant::now(); |
| 122 | for &key in &new_keys { |
| 123 | bplus_copy.insert(key, key * 2); |
| 124 | } |
| 125 | let bplus_time = start.elapsed(); |
| 126 | |
| 127 | // Reset and benchmark BTreeMap insert |
| 128 | btree_copy.clear(); |
| 129 | for i in 0..tree_size { |
| 130 | btree_copy.insert(i, i * 2); |
| 131 | } |
| 132 | |
| 133 | let start = Instant::now(); |
| 134 | for &key in &new_keys { |
| 135 | btree_copy.insert(key, key * 2); |
| 136 | } |
| 137 | let btree_time = start.elapsed(); |
| 138 | |
| 139 | let bplus_per_op = bplus_time.as_nanos() as f64 / sample_size as f64; |
| 140 | let btree_per_op = btree_time.as_nanos() as f64 / sample_size as f64; |
| 141 | let speedup = btree_per_op / bplus_per_op; |
| 142 | |
| 143 | println!(" BPlusTreeMap: {:.1}ns per insert", bplus_per_op); |
| 144 | println!(" BTreeMap: {:.1}ns per insert", btree_per_op); |
| 145 | println!( |
| 146 | " Ratio: {:.2}x {}", |
| 147 | speedup, |
| 148 | if speedup > 1.0 { |
| 149 | "(BPlusTreeMap faster)" |
| 150 | } else { |
| 151 | "(BTreeMap faster)" |
| 152 | } |
| 153 | ); |
| 154 | println!(); |
| 155 | } |
no test coverage detected