Show performance advantages of range queries.
()
| 180 | |
| 181 | |
| 182 | def 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 | |
| 238 | def main(): |
no test coverage detected