| |
| ''' |
| Performance Benchmark for SOMA Compression Algorithms |
| Measures speed and compression for all 15 algorithms |
| ''' |
|
|
| import time |
| import json |
| import sys |
| from pathlib import Path |
|
|
| def load_sample_data(): |
| '''Load sample messages for testing''' |
| return [ |
| { |
| 'role': 'user', |
| 'content': 'Analyze this code for bugs and suggest improvements. The code processes user input.' |
| }, |
| { |
| 'role': 'assistant', |
| 'content': 'I found several issues: 1) No input validation 2) Missing error handling 3) No type checking. Here is the corrected version with proper validation and error handling included.' |
| } |
| ] |
|
|
| def benchmark_compressor(name, compress_func, messages, iterations=100): |
| '''Benchmark a single compressor''' |
| original_size = len(str(messages)) |
|
|
| |
| compress_func(messages.copy()) |
|
|
| |
| start = time.time() |
| for _ in range(iterations): |
| result = compress_func(messages.copy()) |
| elapsed = time.time() - start |
|
|
| compressed_size = len(str(result)) |
|
|
| return { |
| 'name': name, |
| 'original_size': original_size, |
| 'compressed_size': compressed_size, |
| 'compression_ratio': compressed_size / original_size, |
| 'compression_percent': (1 - compressed_size / original_size) * 100, |
| 'avg_time_ms': (elapsed / iterations) * 1000, |
| 'throughput_per_sec': iterations / elapsed |
| } |
|
|
| def main(): |
| print("SOMA Compression Algorithms - Performance Benchmark") |
| print("=" * 70) |
|
|
| messages = load_sample_data() |
|
|
| |
| sys.path.insert(0, str(Path(__file__).parent)) |
|
|
| compressors = [] |
|
|
| |
| try: |
| from performance_focused_compressor import compress_messages as perf |
| compressors.append(('Performance', perf)) |
| except ImportError as e: |
| print(f"Could not import performance_focused: {e}") |
|
|
| try: |
| from aggressive_hybrid_compressor import compress_messages as agg |
| compressors.append(('Aggressive', agg)) |
| except ImportError: |
| pass |
|
|
| try: |
| from code_focused_compressor import compress_messages as code |
| compressors.append(('Code-Focused', code)) |
| except ImportError: |
| pass |
|
|
| if not compressors: |
| print("No compressors found! Ensure .py files are in same directory.") |
| return |
|
|
| print(f"\nTesting {len(compressors)} compressors...") |
| print(f"Original size: {len(str(messages))} bytes\n") |
|
|
| results = [] |
| for name, func in compressors: |
| print(f"Benchmarking {name}...", end=' ', flush=True) |
| result = benchmark_compressor(name, func, messages) |
| results.append(result) |
| print(f"Done: {result['compression_percent']:.1f}% compression") |
|
|
| |
| results.sort(key=lambda x: x['compression_percent'], reverse=True) |
|
|
| print("\n" + "=" * 70) |
| print("RESULTS") |
| print("=" * 70) |
|
|
| for r in results: |
| print(f"{r['name']}: {r['compression_percent']:.1f}% compression, " |
| f"{r['avg_time_ms']:.2f}ms avg") |
|
|
| print("\nBenchmark complete!") |
|
|
| if __name__ == '__main__': |
| main() |
|
|