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

Function test_optimized_performance

python/tests/test_optimized_bplus_tree.py:295–367  ·  view source on GitHub ↗

Compare optimized vs original B+ tree performance.

()

Source from the content-addressed store, hash-verified

293
294
295def test_optimized_performance():
296 """Compare optimized vs original B+ tree performance."""
297 print("Optimized B+ Tree Performance Test")
298 print("=" * 60)
299
300 sizes = [1000, 10000, 50000]
301
302 for size in sizes:
303 print(f"\nData Size: {size:,} items")
304 print("-" * 40)
305
306 keys = list(range(size))
307 random.shuffle(keys)
308
309 # Test insertion
310 print("\nInsertion Performance:")
311
312 # Original
313 gc.collect()
314 start = time.perf_counter()
315 original = BPlusTreeMap(capacity=128)
316 for key in keys:
317 original[key] = key * 2
318 original_time = time.perf_counter() - start
319
320 # Optimized
321 gc.collect()
322 start = time.perf_counter()
323 optimized = OptimizedBPlusTree(capacity=128)
324 for key in keys:
325 optimized[key] = key * 2
326 optimized_time = time.perf_counter() - start
327
328 improvement = (original_time - optimized_time) / original_time * 100
329 print(f" Original: {original_time:.4f}s ({original_time/size*1e6:.1f} μs/op)")
330 print(
331 f" Optimized: {optimized_time:.4f}s ({optimized_time/size*1e6:.1f} μs/op)"
332 )
333 print(f" Improvement: {improvement:.1f}%")
334
335 # Test lookup
336 print("\nLookup Performance:")
337 lookup_keys = random.sample(keys, min(1000, size))
338
339 # Original
340 gc.collect()
341 start = time.perf_counter()
342 for _ in range(10):
343 for key in lookup_keys:
344 _ = original[key]
345 original_lookup = time.perf_counter() - start
346
347 # Optimized
348 gc.collect()
349 start = time.perf_counter()
350 for _ in range(10):
351 for key in lookup_keys:
352 _ = optimized[key]

Callers 1

Calls 2

BPlusTreeMapClass · 0.90
OptimizedBPlusTreeClass · 0.85

Tested by

no test coverage detected