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

Class PerformanceBaseline

python/tests/test_performance_baseline.py:18–128  ·  view source on GitHub ↗

Measure baseline performance metrics for B+ tree operations.

Source from the content-addressed store, hash-verified

16
17
18class PerformanceBaseline:
19 """Measure baseline performance metrics for B+ tree operations."""
20
21 def __init__(self, tree_size: int = 10000, order: int = 128):
22 self.tree_size = tree_size
23 self.order = order
24 self.keys = list(range(tree_size))
25 random.shuffle(self.keys)
26 self.tree = None
27
28 def measure_operation(self, operation, iterations: int = 1) -> Tuple[float, float]:
29 """Measure operation time and return (total_time, per_operation_time)."""
30 gc.collect()
31 gc.disable()
32
33 start = time.perf_counter()
34 for _ in range(iterations):
35 operation()
36 end = time.perf_counter()
37
38 gc.enable()
39 total_time = end - start
40 per_op_time = total_time / iterations
41 return total_time, per_op_time
42
43 def test_sequential_insert(self) -> Dict[str, float]:
44 """Test sequential insertion performance."""
45 self.tree = BPlusTreeMap(capacity=self.order)
46
47 def insert_all():
48 for i in range(self.tree_size):
49 self.tree[i] = i * 2
50
51 total_time, per_op_time = self.measure_operation(insert_all)
52
53 return {
54 "total_time": total_time,
55 "per_operation_ns": per_op_time * 1e9 / self.tree_size,
56 "operations_per_second": self.tree_size / total_time,
57 }
58
59 def test_random_insert(self) -> Dict[str, float]:
60 """Test random insertion performance."""
61 self.tree = BPlusTreeMap(capacity=self.order)
62
63 def insert_all():
64 for key in self.keys:
65 self.tree[key] = key * 2
66
67 total_time, per_op_time = self.measure_operation(insert_all)
68
69 return {
70 "total_time": total_time,
71 "per_operation_ns": per_op_time * 1e9 / self.tree_size,
72 "operations_per_second": self.tree_size / total_time,
73 }
74
75 def test_lookup_performance(self) -> Dict[str, float]:

Callers 1

Calls

no outgoing calls

Tested by 1