43870e5920
- 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
116 lines
3.1 KiB
Python
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!") |