/ concept-collection / benchcompress
Sign in
concept-collection / benchcompress
benchcompress / scripts / run_benchmarks.py
74 lines · 2.2 KBCodeBlameHistory
e892a17zia_benchmarkJeremy Magland 1#!/usr/bin/env python3
3import json
4from pathlib import Path
5import zia_benchmark
7def format_size(size_bytes: float) -> str:
8 """Format size in bytes to human readable string"""
9 for unit in ['B', 'KB', 'MB', 'GB']:
10 if size_bytes < 1024:
11 return f"{size_bytes:.1f} {unit}"
12 size_bytes /= 1024
13 return f"{size_bytes:.1f} TB"
15def format_time(seconds: float) -> str:
16 """Format time in seconds to human readable string"""
17 if seconds < 0.001:
18 return f"{seconds * 1_000_000:.1f} µs"
19 if seconds < 1:
20 return f"{seconds * 1_000:.1f} ms"
21 return f"{seconds:.2f} s"
23def main():
24 # Run benchmarks
25 print("Running benchmarks...")
26 results = zia_benchmark.run_benchmarks()
28 # Group results by dataset
29 datasets = {}
30 for result in results['results']:
31 dataset_name = result['dataset']
32 if dataset_name not in datasets:
33 datasets[dataset_name] = []
34 datasets[dataset_name].append(result)
36 # Print results
37 print("\nBenchmark Results:")
38 print("=================")
40 for dataset_name, dataset_results in sorted(datasets.items()):
41 print(f"\nDataset: {dataset_name}")
42 print("-" * (len(dataset_name) + 9))
43 print(f"Original size: {format_size(dataset_results[0]['original_size'])}")
45 # Sort algorithms by compression ratio
46 dataset_results.sort(key=lambda x: x['compression_ratio'], reverse=True)
48 # Print table header
49 print("\n{:<15} {:>12} {:>12} {:>12}".format(
50 "Algorithm", "Ratio", "Encode", "Decode"
51 ))
52 print("-" * 53)
54 # Print results for each algorithm
55 for result in dataset_results:
56 print("{:<15} {:>11.2f}x {:>12} {:>12}".format(
57 result['algorithm'],
58 result['compression_ratio'],
59 format_time(result['encode_time']),
60 format_time(result['decode_time'])
61 ))
63 # Save detailed results to JSON
64 output_dir = Path("benchmark_results")
65 output_dir.mkdir(exist_ok=True)
66 output_file = output_dir / "results.json"
68 with open(output_file, "w") as f:
69 json.dump(results, f, indent=2)
71 print(f"\nDetailed results saved to {output_file}")
73if __name__ == "__main__":
74 main()
moveopenescclose