#!/usr/bin/env python3 ''' 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)) # Warmup compress_func(messages.copy()) # Benchmark 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() # Add current directory to path sys.path.insert(0, str(Path(__file__).parent)) compressors = [] # Try to import all 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") # Sort by 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()