a2e13a70a1
- Added instructions, cycles, and IPC metrics to all reports - Created CSV data files for each language with detailed metrics - Added timeline data (memory and CPU over time) for each run - Updated all reports with new metrics - Created analysis script to analyze collected data - Generated reports for all decimal levels (1, 2, 5, 10, 100, 1000, 2000) Key findings: - D has highest IPC (4.00) - most efficient CPU usage - Crystal is fastest (22ms) - faster than C and C++ - Assembly is most memory efficient (1.4MB) - Rust and Fortran have IPC 3.11 - good optimization
49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
#!/usr/bin/env python3
|
|
import os
|
|
import csv
|
|
import json
|
|
|
|
# Collect data from all languages
|
|
data = {}
|
|
languages = []
|
|
|
|
# Read data from each language
|
|
for lang in os.listdir('data'):
|
|
lang_dir = os.path.join('data', lang)
|
|
if os.path.isdir(lang_dir):
|
|
summary_file = os.path.join(lang_dir, 'summary.csv')
|
|
if os.path.exists(summary_file):
|
|
languages.append(lang)
|
|
with open(summary_file, 'r') as f:
|
|
reader = csv.DictReader(f)
|
|
lang_data = {}
|
|
for row in reader:
|
|
lang_data[row['metric']] = float(row['value'])
|
|
data[lang] = lang_data
|
|
|
|
# Sort by time
|
|
sorted_by_time = sorted(languages, key=lambda x: data[x].get('time_ms', float('inf')))
|
|
|
|
# Print analysis
|
|
print("\n=== Top 10 snabbaste språk ===")
|
|
for i, lang in enumerate(sorted_by_time[:10], 1):
|
|
d = data[lang]
|
|
print(f"{i}. {lang:15} {d['time_ms']:6.0f} ms, {d['memory_bytes']:10.0f} bytes, IPC: {d['ipc']:.2f}")
|
|
|
|
print("\n=== Top 10 minneseffektiva språk ===")
|
|
sorted_by_memory = sorted(languages, key=lambda x: data[x].get('memory_bytes', float('inf')))
|
|
for i, lang in enumerate(sorted_by_memory[:10], 1):
|
|
d = data[lang]
|
|
print(f"{i}. {lang:15} {d['memory_bytes']:10.0f} bytes, {d['time_ms']:6.0f} ms, IPC: {d['ipc']:.2f}")
|
|
|
|
print("\n=== Top 10 högsta IPC (effektivitet) ===")
|
|
sorted_by_ipc = sorted(languages, key=lambda x: data[x].get('ipc', 0), reverse=True)
|
|
for i, lang in enumerate(sorted_by_ipc[:10], 1):
|
|
d = data[lang]
|
|
print(f"{i}. {lang:15} IPC: {d['ipc']:.2f}, {d['time_ms']:6.0f} ms")
|
|
|
|
# Save data for visualization
|
|
with open('data/analysis.json', 'w') as f:
|
|
json.dump(data, f, indent=2)
|
|
|
|
print("\n=== Data sparad till data/analysis.json ===") |