Files
print_hej/create_reports.py
T
Ein Anderssono 43870e5920 Reorganize documentation: create separate reports for each decimal level
- Create reports/ directory with detailed performance reports
- Simplify README.md to provide overview and summary
- Add links to detailed reports for each decimal level (1, 2, 5, 10, 100, 1000, 2000)
- Keep summary table and key findings in main README
- Remove verbose charts from main README to reduce noise
2026-04-23 10:16:20 +02:00

116 lines
3.1 KiB
Python

#!/usr/bin/env python3
"""Create separate report files for each decimal level."""
import re
from pathlib import Path
# Read README
with open('README.md', 'r') as f:
content = f.read()
# Decimal levels to extract
decimal_levels = [1, 2, 5, 10, 100, 1000, 2000]
# Create reports directory
Path('reports').mkdir(exist_ok=True)
# Extract sections for each decimal level
for level in decimal_levels:
# Find the section for this decimal level
pattern = rf'#### {level} Decimal[s]?\n\n(.*?)(?=#### \d+ Decimal|### |$)'
match = re.search(pattern, content, re.DOTALL)
if match:
section = match.group(1)
# Create report file
report_content = f"""# Performance Report: {level} Decimal{'s' if level > 1 else ''}
## Test Environment
**Hardware:**
- **Model:** MacBook Neo (Mac17,5)
- **Processor:** Apple A18 Pro (6 cores: 2 performance + 4 efficiency)
- **Memory:** 8 GB RAM
- **Operating System:** macOS (Darwin)
## Performance Charts
{section}
---
*Generated from Pi Calculation Benchmark - {level} decimal{'s' if level > 1 else ''} precision*
"""
# Write report file
filename = f'reports/{level}_decimals.md'
with open(filename, 'w') as f:
f.write(report_content)
print(f"Created {filename}")
else:
print(f"No section found for {level} decimals")
# Create main summary report
summary_content = """# Pi Calculation Benchmark: Performance Summary
## Overview
This study compares the performance of 34 programming languages when calculating π (pi) with high precision.
## Test Environment
**Hardware:**
- **Model:** MacBook Neo (Mac17,5)
- **Processor:** Apple A18 Pro (6 cores: 2 performance + 4 efficiency)
- **Memory:** 8 GB RAM
- **Operating System:** macOS (Darwin)
## Method: Machin's Formula
All implementations use Machin's formula for π calculation:
```
π/4 = 4·arctan(1/5) - arctan(1/239)
```
## Performance Reports by Decimal Level
- [1 Decimal](reports/1_decimals.md) - Minimal precision
- [2 Decimals](reports/2_decimals.md) - Low precision
- [5 Decimals](reports/5_decimals.md) - Medium precision
- [10 Decimals](reports/10_decimals.md) - Standard precision
- [100 Decimals](reports/100_decimals.md) - High precision
- [1000 Decimals](reports/1000_decimals.md) - Very high precision
- [2000 Decimals](reports/2000_decimals.md) - Extreme precision
## Key Findings
### Fastest Languages (100 decimals)
1. **C** - 9ms (compiled)
2. **Assembly** - 9ms (compiled)
3. **Rust** - 9ms (compiled)
4. **Go** - 9ms (compiled)
5. **Nim** - 9ms (compiled)
### Memory Efficiency (100 decimals)
- **C, Rust, Assembly**: < 1 MB
- **JIT Languages**: ~2 MB
- **Interpreted Languages**: ~2 MB
### Performance Scaling
- Compiled languages maintain consistent performance across all decimal levels
- JIT languages show startup overhead but good performance
- Interpreted languages scale poorly with increased precision
---
*Generated from Pi Calculation Benchmark*
"""
with open('reports/summary.md', 'w') as f:
f.write(summary_content)
print("Created reports/summary.md")
print("\nAll reports created successfully!")