MCPcopy Create free account
hub / github.com/KentBeck/BPlusTree3 / demo_performance_comparison

Function demo_performance_comparison

python/examples/range_queries.py:182–235  ·  view source on GitHub ↗

Show performance advantages of range queries.

()

Source from the content-addressed store, hash-verified

180
181
182def demo_performance_comparison():
183 """Show performance advantages of range queries."""
184 print("\n=== Performance Advantages ===\n")
185
186 tree = BPlusTreeMap(capacity=32)
187
188 # Create larger dataset
189 print("Setting up performance test with 10,000 items...")
190 for i in range(10000):
191 tree[i] = f"item_{i:05d}"
192
193 import time
194
195 # Test 1: Get range of 100 items from middle
196 start_time = time.time()
197 range_items = list(tree.range(5000, 5100))
198 range_time = time.time() - start_time
199
200 print(f" Range query (100 items): {range_time:.6f} seconds")
201 print(f" Retrieved {len(range_items)} items efficiently")
202
203 # Test 2: Compare with dictionary approach (simulated)
204 dict_data = {i: f"item_{i:05d}" for i in range(10000)}
205
206 start_time = time.time()
207 dict_range = [(k, v) for k, v in dict_data.items() if 5000 <= k < 5100]
208 dict_time = time.time() - start_time
209
210 print(f" Dictionary scan (100 items): {dict_time:.6f} seconds")
211 print(f" B+ Tree is {dict_time/range_time:.1f}x faster for this range query!")
212
213 # Test 3: Early termination advantage
214 print("\n Early termination test (find first 5 items > 7500):")
215
216 start_time = time.time()
217 tree_early = []
218 for key, value in tree.range(7500, None):
219 tree_early.append((key, value))
220 if len(tree_early) >= 5:
221 break
222 tree_early_time = time.time() - start_time
223
224 start_time = time.time()
225 dict_early = []
226 for k, v in sorted(dict_data.items()):
227 if k >= 7500:
228 dict_early.append((k, v))
229 if len(dict_early) >= 5:
230 break
231 dict_early_time = time.time() - start_time
232
233 print(f" B+ Tree: {tree_early_time:.6f} seconds")
234 print(f" Dict scan: {dict_early_time:.6f} seconds")
235 print(f" B+ Tree is {dict_early_time/tree_early_time:.1f}x faster!")
236
237
238def main():

Callers 1

mainFunction · 0.85

Calls 3

rangeMethod · 0.95
BPlusTreeMapClass · 0.90
itemsMethod · 0.45

Tested by

no test coverage detected