diff --git a/README.md b/README.md index b96393f..203bf22 100644 --- a/README.md +++ b/README.md @@ -53,150 +53,128 @@ Detailed performance reports are available for each decimal precision level: - **[1000 Decimals](reports/1000_decimals.md)** - Very high precision - **[2000 Decimals](reports/2000_decimals.md)** - Extreme precision -## Summary Results (100 Decimals) +## Summary Results (100 Decimals - No Measurement Overhead) + +**Important:** These results use a two-step measurement method to eliminate the ~10ms overhead from measurement tools. This gives accurate timing for fast programs. ### All Languages Performance -| Rank | Language | Time (ms) | Memory (bytes) | Type | -|------|-----------|-----------|----------------|------| -| 1 | Odin | 19 | 1,725,781 | Compiled | -| 2 | Assembly | 20 | 1,409,024 | Compiled | -| 3 | Nim | 20 | 1,572,864 | Compiled | -| 4 | Rust | 20 | 1,682,096 | Compiled | -| 5 | Lua | 20 | 2,086,229 | Interpreted | -| 6 | Objective-C | 20 | 6,045,696 | Compiled | -| 7 | Swift | 20 | 5,947,392 | Compiled | -| 8 | Zig | 22 | 2,981,888 | Compiled | -| 9 | C++ | 23 | 1,490,944 | Compiled | -| 10 | Go | 24 | 3,932,160 | Compiled | -| 11 | C | 25 | 1,671,168 | Compiled | -| 12 | D | 30 | 2,457,600 | Compiled | -| 13 | Bash | 30 | 2,058,922 | Interpreted | -| 14 | Fortran | 31 | 1,802,240 | Compiled | -| 15 | Crystal | 32 | 3,244,032 | Compiled | -| 16 | Dart | 34 | 14,488,917 | JIT | -| 17 | Haskell | 40 | 11,894,784 | Compiled | -| 18 | Java | 46 | 43,078,997 | JIT | -| 19 | Python | 47 | 9,693,866 | Interpreted | -| 20 | Perl | 47 | 12,528,298 | Interpreted | -| 21 | Brainfuck | 50 | 9,267,882 | Interpreted | -| 22 | Kotlin | 60 | 45,247,146 | JIT | -| 23 | C# | 66 | 41,473,365 | JIT | -| 24 | PHP | 68 | 26,487,466 | Interpreted | -| 25 | Ruby | 79 | 28,824,917 | Interpreted | -| 26 | JavaScript | 89 | 44,848,469 | JIT | -| 27 | Julia | 157 | 235,885,909 | JIT | -| 28 | R | 163 | 90,947,584 | Interpreted | -| 29 | Erlang | 176 | 77,359,786 | Interpreted | -| 30 | Scala | 344 | 55,470,762 | JIT | -| 31 | Elixir | 401 | 89,205,418 | Interpreted | -| 32 | TypeScript | 931 | 218,868,394 | JIT | +| Rank | Language | Time (ms) | Type | +|------|-----------|-----------|------| +| 1 | C | 4 | Compiled | +| 2 | C++ | 4 | Compiled | +| 3 | Go | 4 | Compiled | +| 4 | Nim | 4 | Compiled | +| 5 | Odin | 4 | Compiled | +| 6 | Rust | 4 | Compiled | +| 7 | Crystal | 5 | Compiled | +| 8 | Fortran | 5 | Compiled | +| 9 | Objective-C | 5 | Compiled | +| 10 | Assembly | 6 | Compiled | +| 11 | Swift | 6 | Compiled | +| 12 | D | 8 | Compiled | +| 13 | Lua | 9 | Interpreted | +| 14 | Zig | 9 | Compiled | +| 15 | Bash | 12 | Interpreted | +| 16 | Dart | 17 | JIT | +| 17 | Haskell | 19 | Compiled | +| 18 | Brainfuck | 28 | Interpreted | +| 19 | Perl | 31 | Interpreted | +| 20 | Python | 33 | Interpreted | +| 21 | Java | 34 | JIT | +| 22 | C# | 37 | JIT | +| 23 | Kotlin | 41 | JIT | +| 24 | PHP | 53 | Interpreted | +| 25 | Ruby | 59 | Interpreted | +| 26 | JavaScript | 68 | JIT | +| 27 | Erlang | 114 | Interpreted | +| 28 | Julia | 124 | JIT | +| 29 | R | 206 | Interpreted | +| 30 | Elixir | 310 | Interpreted | +| 31 | Scala | 378 | JIT | +| 32 | TypeScript | 970 | JIT | ### Language Categories **Compiled Languages (Native Code):** -- Fastest execution (9-35 ms) -- Minimal memory usage (0-966,656 bytes) +- Fastest execution (4-9 ms) +- Minimal memory usage - Consistent performance across decimal levels **JIT-Compiled Languages:** -- Moderate execution time (31-290 ms) -- Higher memory usage (~2 MB) +- Moderate execution time (17-970 ms) +- Higher memory usage - Good performance after warmup **Interpreted Languages:** -- Variable execution time (29-898 ms) -- Moderate memory usage (~2 MB) +- Variable execution time (9-310 ms) +- Moderate memory usage - Performance varies widely ## Key Findings -1. **Compiled languages dominate**: Assembly, Rust, Nim, Odin, C, C++ all execute in 19-25 ms -2. **Memory efficiency varies**: - - Compiled languages: 1.4-6.0 MB (Assembly lowest at 1.4 MB) - - Go with runtime: 3.9 MB - - JVM languages: 41-55 MB - - Interpreted languages: 9-29 MB - - Julia: 236 MB (JIT + scientific libraries) +1. **Compiled languages dominate**: C, C++, Go, Nim, Odin, Rust all execute in 4-6 ms +2. **No measurement overhead**: Using two-step method eliminates ~10ms overhead from measurement tools 3. **Performance scaling**: Compiled languages maintain consistent performance across all decimal levels 4. **JIT overhead**: Java, Kotlin, Scala show startup overhead but good performance after warmup -5. **Interpreted languages**: Python, Perl, PHP, Ruby show moderate performance (47-79 ms) -6. **Memory fix applied**: All languages now show correct memory values using `/usr/bin/time -l` on macOS +5. **Interpreted languages**: Python, Perl, PHP, Ruby show moderate performance (31-59 ms) +6. **Two-step method**: + - Step 1: Fast test (no overhead) for accurate timing + - Step 2: Detailed trace for execution phases (Gantt diagrams) ## Performance Analysis by Language Type ### Compiled Languages (Native Code) -- **Fastest execution**: 19-32 ms -- **Minimal memory**: 1.4-6.0 MB -- **Best performers**: Assembly, Rust, Nim, Odin, C, C++ +- **Fastest execution**: 4-9 ms +- **Minimal memory**: Low overhead +- **Best performers**: C, C++, Go, Nim, Odin, Rust (all 4-6 ms) - **Why fast**: Direct machine code, no runtime overhead, no garbage collection ### JIT-Compiled Languages -- **Moderate execution**: 34-931 ms -- **Higher memory**: 14-236 MB -- **Best performers**: Java (46 ms), Kotlin (60 ms), Dart (34 ms) +- **Moderate execution**: 17-970 ms +- **Higher memory**: Runtime overhead +- **Best performers**: Dart (17 ms), Java (34 ms), Kotlin (41 ms) - **Why moderate**: JIT compilation overhead, runtime initialization ### Interpreted Languages -- **Variable execution**: 20-401 ms -- **Moderate memory**: 2-29 MB -- **Best performers**: Lua (20 ms), Python (47 ms), Perl (47 ms) +- **Variable execution**: 9-310 ms +- **Moderate memory**: Runtime overhead +- **Best performers**: Lua (9 ms), Bash (12 ms), Python (33 ms) - **Why variable**: Interpretation overhead, dynamic typing ### Functional Languages -- **Mixed performance**: 40-401 ms -- **Higher memory**: 12-90 MB -- **Best performers**: Haskell (40 ms), Erlang (176 ms) +- **Mixed performance**: 19-310 ms +- **Higher memory**: Runtime overhead +- **Best performers**: Haskell (19 ms), Erlang (114 ms) - **Why mixed**: Functional paradigms, immutability, pattern matching ## Detailed Language Analysis ### Top Performers (Rank 1-10) -#### 1. Odin (19 ms, 1.7 MB) - Fastest +#### 1-6. C, C++, Go, Nim, Odin, Rust (4 ms) - Fastest **Why fastest:** -- **Modern systems language** - Designed for performance -- **No GC** - Manual memory management -- **Direct compilation** - No intermediate representations -- **Minimal runtime** - Small standard library -- **Optimized for speed** - Built for game development +- **Direct compilation** - All compile to native machine code +- **No runtime overhead** - Minimal or no garbage collection +- **Optimized BigInt** - Efficient arbitrary precision arithmetic +- **Low-level control** - Direct memory management +- **Mature compilers** - Years of optimization work **Implementation:** -- Uses Machin's formula with custom BigInt +- All use Machin's formula with efficient BigInt - Direct compilation to machine code -- Very low overhead (1.7 MB) +- No interpreter or VM overhead -#### 2. Assembly (20 ms, 1.4 MB) - Most Efficient -**Why efficient:** -- **Direct machine code** - No compiler overhead, optimal instructions -- **No runtime** - Only necessary code, no overhead -- **Optimal memory** - Minimal allocations, precise control -- **No abstractions** - Direct hardware access -- **Manual optimization** - Every instruction optimized by hand +#### 7-9. Crystal, Fortran, Objective-C (5 ms) - Very Fast +**Why very fast:** +- **Crystal**: Ruby-like syntax, compiles to native code +- **Fortran**: Optimized for numerical computation +- **Objective-C**: C with Smalltalk-style OOP -**Implementation:** -- Uses Machin's formula with manual BigInt operations -- Direct register manipulation for arithmetic -- No function call overhead -- Minimal memory footprint (1.4 MB) - -#### 3. Nim (20 ms, 1.5 MB) - Fast +#### 10-11. Assembly, Swift (6 ms) - Fast **Why fast:** -- **Compiles to C** - Leverages C compiler optimizations -- **Minimal runtime** - Small standard library overhead -- **Efficient GC** - Optional garbage collector, can be disabled -- **Direct compilation** - No intermediate bytecode -- **Optimized for speed** - Designed for performance - -**Implementation:** -- Compiles Nim code to C, then to machine code -- Uses Machin's formula with efficient BigInt -- Minimal runtime overhead (1.5 MB) - -#### 4. Rust (20 ms, 1.6 MB) - Fast -**Why fast:** -- **Optimized BigInt library** - `num-bigint` crate with years of optimization -- **Mature compiler** - LLVM backend with aggressive optimizations +- **Assembly**: Hand-optimized machine code +- **Swift**: LLVM compiler with optimizations - **Zero-cost abstractions** - High-level code compiles to efficient machine code - **No garbage collection** - Manual memory management with safety guarantees - **Optimized allocator** - Efficient memory allocation diff --git a/generate_gantt.py b/generate_gantt.py old mode 100755 new mode 100644 index 9b5d221..b01e3d8 --- a/generate_gantt.py +++ b/generate_gantt.py @@ -3,10 +3,41 @@ Generate Gantt diagrams from trace data showing execution phases. """ -import json +import re import os from pathlib import Path +def parse_trace_file(filepath): + """Parse a trace output file and extract execution phases.""" + data = {} + + with open(filepath, 'r') as f: + content = f.read() + + # Remove ANSI color codes + content = re.sub(r'\x1b\[[0-9;]*m', '', content) + + # Find all lines with SUCCESS + # Format: "Assembly SUCCESS 8 ms (Startup: 0ms, Calc: 5ms, I/O: 0ms)" + pattern = r'([\w\-]+)\s+SUCCESS\s+(\d+)\s+ms\s+\(Startup:\s+(\d+)ms,\s+Calc:\s+(\d+)ms,\s+I/O:\s+(\d+)ms\)' + matches = re.findall(pattern, content) + + for match in matches: + lang = match[0] + total_time = int(match[1]) + startup_time = int(match[2]) + calc_time = int(match[3]) + io_time = int(match[4]) + + data[lang] = { + 'total_time': total_time, + 'startup_time': startup_time, + 'calc_time': calc_time, + 'io_time': io_time + } + + return data + def generate_gantt_diagram(data, title): """Generate a Mermaid Gantt diagram from trace data.""" @@ -26,9 +57,9 @@ gantt # Add sections for each language for lang, metrics in top_20: - startup = metrics.get('startup_time', 0) - calc = metrics.get('calc_time', 0) - io = metrics.get('io_time', 0) + startup = metrics['startup_time'] + calc = metrics['calc_time'] + io = metrics['io_time'] gantt += f" section {lang}\n" gantt += f" Startup :0, {startup}\n" @@ -48,11 +79,14 @@ def generate_stacked_bar_chart(data, title): # Take top 20 for readability top_20 = sorted_data[:20] + # Calculate max time for y-axis + max_time = max([m['total_time'] for _, m in top_20]) + 10 + chart = f"""```mermaid xychart-beta title "{title}" x-axis [{', '.join([f'"{lang}"' for lang, _ in top_20])}] - y-axis "Tid (ms)" 0 --> {max([m['total_time'] for _, m in top_20]) + 10} + y-axis "Tid (ms)" 0 --> {max_time} bar Startup [{', '.join([str(m['startup_time']) for _, m in top_20])}] bar Calculation [{', '.join([str(m['calc_time']) for _, m in top_20])}] @@ -66,51 +100,48 @@ xychart-beta def main(): """Main function to generate Gantt diagrams.""" - # Check if traces directory exists - traces_dir = Path("traces") - if not traces_dir.exists(): - print("No traces directory found. Run run_trace.sh first.") + reports_dir = Path("reports") + if not reports_dir.exists(): + print("No reports directory found. Run run_trace.sh first.") return - # Load trace data - trace_file = traces_dir / "trace_data.json" - if not trace_file.exists(): - print("No trace data found. Run run_trace.sh first.") - return - - with open(trace_file) as f: - data = json.load(f) - # Generate Gantt diagrams for each decimal level - reports_dir = Path("reports") - reports_dir.mkdir(exist_ok=True) - for decimals in [1, 2, 5, 10, 100, 1000, 2000]: - if str(decimals) in data: - decimal_data = data[str(decimals)] - - # Generate Gantt diagram - gantt = generate_gantt_diagram( - decimal_data, - f"Exekveringsfaser - {decimals} decimaler" - ) - - # Generate stacked bar chart - stacked = generate_stacked_bar_chart( - decimal_data, - f"Exekveringsfaser - {decimals} decimaler" - ) - - # Write to report - report_file = reports_dir / f"{decimals}_decimals_gantt.md" - with open(report_file, 'w') as f: - f.write(f"# Exekveringsfaser - {decimals} decimaler\n\n") - f.write("## Gantt-diagram\n\n") - f.write(gantt) - f.write("\n## Staplat stapeldiagram\n\n") - f.write(stacked) - - print(f"Generated Gantt diagram for {decimals} decimals") + trace_file = reports_dir / f"trace_{decimals}_output.txt" + + if not trace_file.exists(): + print(f"Warning: {trace_file} not found, skipping...") + continue + + # Parse trace data + data = parse_trace_file(trace_file) + + if not data: + print(f"Warning: No data found in {trace_file}, skipping...") + continue + + # Generate Gantt diagram + gantt = generate_gantt_diagram( + data, + f"Exekveringsfaser - {decimals} decimaler" + ) + + # Generate stacked bar chart + stacked = generate_stacked_bar_chart( + data, + f"Exekveringsfaser - {decimals} decimaler" + ) + + # Write to report + report_file = reports_dir / f"{decimals}_decimals_gantt.md" + with open(report_file, 'w') as f: + f.write(f"# Exekveringsfaser - {decimals} decimaler\n\n") + f.write("## Gantt-diagram\n\n") + f.write(gantt) + f.write("\n## Staplat stapeldiagram\n\n") + f.write(stacked) + + print(f"Generated Gantt diagram for {decimals} decimals") print("Done!") diff --git a/reports/1000_decimals_gantt.md b/reports/1000_decimals_gantt.md new file mode 100644 index 0000000..8fa854e --- /dev/null +++ b/reports/1000_decimals_gantt.md @@ -0,0 +1,105 @@ +# Exekveringsfaser - 1000 decimaler + +## Gantt-diagram + +```mermaid +gantt + title Exekveringsfaser - 1000 decimaler + dateFormat X + axisFormat %L ms + + section Assembly + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section C + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Rust + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Go + Startup :0, 0 + Calculation :0, 5 + I/O :5, 5 + section Objective-C + Startup :0, 0 + Calculation :0, 5 + I/O :5, 5 + section Crystal + Startup :0, 0 + Calculation :0, 6 + I/O :6, 6 + section D + Startup :0, 1 + Calculation :1, 10 + I/O :10, 11 + section Nim + Startup :0, 1 + Calculation :1, 10 + I/O :10, 11 + section Odin + Startup :0, 1 + Calculation :1, 10 + I/O :10, 11 + section Zig + Startup :0, 1 + Calculation :1, 12 + I/O :12, 13 + section Fortran + Startup :0, 1 + Calculation :1, 15 + I/O :15, 16 + section Dart + Startup :0, 2 + Calculation :2, 18 + I/O :18, 20 + section Haskell + Startup :0, 1 + Calculation :1, 17 + I/O :17, 18 + section Bash + Startup :0, 2 + Calculation :2, 23 + I/O :23, 25 + section Lua + Startup :0, 3 + Calculation :3, 27 + I/O :27, 30 + section Python + Startup :0, 4 + Calculation :4, 36 + I/O :36, 40 + section Java + Startup :0, 4 + Calculation :4, 38 + I/O :38, 42 + section CSharp + Startup :0, 4 + Calculation :4, 41 + I/O :41, 45 + section Kotlin + Startup :0, 5 + Calculation :5, 47 + I/O :47, 52 + section PHP + Startup :0, 6 + Calculation :6, 54 + I/O :54, 60 +``` + +## Staplat stapeldiagram + +```mermaid +xychart-beta + title "Exekveringsfaser - 1000 decimaler" + x-axis ["Assembly", "C", "Rust", "Go", "Objective-C", "Crystal", "D", "Nim", "Odin", "Zig", "Fortran", "Dart", "Haskell", "Bash", "Lua", "Python", "Java", "CSharp", "Kotlin", "PHP"] + y-axis "Tid (ms)" 0 --> 70 + + bar Startup [0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 1, 2, 3, 4, 4, 4, 5, 6] + bar Calculation [4, 4, 4, 5, 5, 6, 9, 9, 9, 11, 14, 16, 16, 21, 24, 32, 34, 37, 42, 48] + bar I/O [0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 1, 2, 3, 4, 4, 4, 5, 6] +``` + diff --git a/reports/100_decimals_gantt.md b/reports/100_decimals_gantt.md new file mode 100644 index 0000000..56fdcc0 --- /dev/null +++ b/reports/100_decimals_gantt.md @@ -0,0 +1,105 @@ +# Exekveringsfaser - 100 decimaler + +## Gantt-diagram + +```mermaid +gantt + title Exekveringsfaser - 100 decimaler + dateFormat X + axisFormat %L ms + + section Assembly + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section C + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Go + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Nim + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Odin + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Crystal + Startup :0, 0 + Calculation :0, 5 + I/O :5, 5 + section Fortran + Startup :0, 0 + Calculation :0, 5 + I/O :5, 5 + section Rust + Startup :0, 0 + Calculation :0, 5 + I/O :5, 5 + section Objective-C + Startup :0, 0 + Calculation :0, 6 + I/O :6, 6 + section Swift + Startup :0, 0 + Calculation :0, 7 + I/O :7, 7 + section D + Startup :0, 1 + Calculation :1, 9 + I/O :9, 10 + section Zig + Startup :0, 1 + Calculation :1, 9 + I/O :9, 10 + section Lua + Startup :0, 1 + Calculation :1, 10 + I/O :10, 11 + section Bash + Startup :0, 1 + Calculation :1, 12 + I/O :12, 13 + section Dart + Startup :0, 1 + Calculation :1, 14 + I/O :14, 15 + section Haskell + Startup :0, 2 + Calculation :2, 19 + I/O :19, 21 + section Perl + Startup :0, 3 + Calculation :3, 31 + I/O :31, 34 + section Python + Startup :0, 3 + Calculation :3, 32 + I/O :32, 35 + section Java + Startup :0, 3 + Calculation :3, 33 + I/O :33, 36 + section CSharp + Startup :0, 4 + Calculation :4, 37 + I/O :37, 41 +``` + +## Staplat stapeldiagram + +```mermaid +xychart-beta + title "Exekveringsfaser - 100 decimaler" + x-axis ["Assembly", "C", "Go", "Nim", "Odin", "Crystal", "Fortran", "Rust", "Objective-C", "Swift", "D", "Zig", "Lua", "Bash", "Dart", "Haskell", "Perl", "Python", "Java", "CSharp"] + y-axis "Tid (ms)" 0 --> 52 + + bar Startup [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 3, 3, 4] + bar Calculation [4, 4, 4, 4, 4, 5, 5, 5, 6, 7, 8, 8, 9, 11, 13, 17, 28, 29, 30, 33] + bar I/O [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 3, 3, 4] +``` + diff --git a/reports/10_decimals_gantt.md b/reports/10_decimals_gantt.md new file mode 100644 index 0000000..e9a33a3 --- /dev/null +++ b/reports/10_decimals_gantt.md @@ -0,0 +1,105 @@ +# Exekveringsfaser - 10 decimaler + +## Gantt-diagram + +```mermaid +gantt + title Exekveringsfaser - 10 decimaler + dateFormat X + axisFormat %L ms + + section C + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Go + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Nim + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Odin + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Rust + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Crystal + Startup :0, 0 + Calculation :0, 5 + I/O :5, 5 + section Fortran + Startup :0, 0 + Calculation :0, 5 + I/O :5, 5 + section Objective-C + Startup :0, 0 + Calculation :0, 5 + I/O :5, 5 + section Assembly + Startup :0, 0 + Calculation :0, 5 + I/O :5, 5 + section Swift + Startup :0, 0 + Calculation :0, 6 + I/O :6, 6 + section D + Startup :0, 1 + Calculation :1, 9 + I/O :9, 10 + section Lua + Startup :0, 1 + Calculation :1, 9 + I/O :9, 10 + section Zig + Startup :0, 1 + Calculation :1, 9 + I/O :9, 10 + section Bash + Startup :0, 1 + Calculation :1, 12 + I/O :12, 13 + section Dart + Startup :0, 1 + Calculation :1, 13 + I/O :13, 14 + section Haskell + Startup :0, 2 + Calculation :2, 19 + I/O :19, 21 + section Perl + Startup :0, 3 + Calculation :3, 28 + I/O :28, 31 + section Python + Startup :0, 3 + Calculation :3, 31 + I/O :31, 34 + section CSharp + Startup :0, 4 + Calculation :4, 38 + I/O :38, 42 + section Java + Startup :0, 4 + Calculation :4, 41 + I/O :41, 45 +``` + +## Staplat stapeldiagram + +```mermaid +xychart-beta + title "Exekveringsfaser - 10 decimaler" + x-axis ["C", "Go", "Nim", "Odin", "Rust", "Crystal", "Fortran", "Objective-C", "Assembly", "Swift", "D", "Lua", "Zig", "Bash", "Dart", "Haskell", "Perl", "Python", "CSharp", "Java"] + y-axis "Tid (ms)" 0 --> 57 + + bar Startup [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 3, 4, 4] + bar Calculation [4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 8, 8, 8, 11, 12, 17, 25, 28, 34, 37] + bar I/O [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 3, 4, 4] +``` + diff --git a/reports/1_decimals_gantt.md b/reports/1_decimals_gantt.md new file mode 100644 index 0000000..be5a0a7 --- /dev/null +++ b/reports/1_decimals_gantt.md @@ -0,0 +1,105 @@ +# Exekveringsfaser - 1 decimaler + +## Gantt-diagram + +```mermaid +gantt + title Exekveringsfaser - 1 decimaler + dateFormat X + axisFormat %L ms + + section C + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Go + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Nim + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Odin + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Rust + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Crystal + Startup :0, 0 + Calculation :0, 5 + I/O :5, 5 + section Objective-C + Startup :0, 0 + Calculation :0, 5 + I/O :5, 5 + section Fortran + Startup :0, 0 + Calculation :0, 6 + I/O :6, 6 + section Swift + Startup :0, 0 + Calculation :0, 6 + I/O :6, 6 + section D + Startup :0, 1 + Calculation :1, 9 + I/O :9, 10 + section Lua + Startup :0, 1 + Calculation :1, 9 + I/O :9, 10 + section Zig + Startup :0, 1 + Calculation :1, 10 + I/O :10, 11 + section Bash + Startup :0, 1 + Calculation :1, 12 + I/O :12, 13 + section Dart + Startup :0, 1 + Calculation :1, 14 + I/O :14, 15 + section Haskell + Startup :0, 2 + Calculation :2, 19 + I/O :19, 21 + section Assembly + Startup :0, 2 + Calculation :2, 23 + I/O :23, 25 + section Perl + Startup :0, 3 + Calculation :3, 29 + I/O :29, 32 + section Python + Startup :0, 3 + Calculation :3, 32 + I/O :32, 35 + section Java + Startup :0, 4 + Calculation :4, 36 + I/O :36, 40 + section CSharp + Startup :0, 4 + Calculation :4, 38 + I/O :38, 42 +``` + +## Staplat stapeldiagram + +```mermaid +xychart-beta + title "Exekveringsfaser - 1 decimaler" + x-axis ["C", "Go", "Nim", "Odin", "Rust", "Crystal", "Objective-C", "Fortran", "Swift", "D", "Lua", "Zig", "Bash", "Dart", "Haskell", "Assembly", "Perl", "Python", "Java", "CSharp"] + y-axis "Tid (ms)" 0 --> 54 + + bar Startup [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 3, 3, 4, 4] + bar Calculation [4, 4, 4, 4, 4, 5, 5, 6, 6, 8, 8, 9, 11, 13, 17, 21, 26, 29, 32, 34] + bar I/O [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 3, 3, 4, 4] +``` + diff --git a/reports/2000_decimals_gantt.md b/reports/2000_decimals_gantt.md new file mode 100644 index 0000000..cfb60ab --- /dev/null +++ b/reports/2000_decimals_gantt.md @@ -0,0 +1,105 @@ +# Exekveringsfaser - 2000 decimaler + +## Gantt-diagram + +```mermaid +gantt + title Exekveringsfaser - 2000 decimaler + dateFormat X + axisFormat %L ms + + section C + Startup :0, 0 + Calculation :0, 5 + I/O :5, 5 + section Go + Startup :0, 0 + Calculation :0, 6 + I/O :6, 6 + section Objective-C + Startup :0, 0 + Calculation :0, 6 + I/O :6, 6 + section Rust + Startup :0, 0 + Calculation :0, 6 + I/O :6, 6 + section Assembly + Startup :0, 0 + Calculation :0, 6 + I/O :6, 6 + section Crystal + Startup :0, 0 + Calculation :0, 7 + I/O :7, 7 + section D + Startup :0, 1 + Calculation :1, 12 + I/O :12, 13 + section Zig + Startup :0, 1 + Calculation :1, 16 + I/O :16, 17 + section Haskell + Startup :0, 2 + Calculation :2, 18 + I/O :18, 20 + section Dart + Startup :0, 2 + Calculation :2, 19 + I/O :19, 21 + section Odin + Startup :0, 2 + Calculation :2, 22 + I/O :22, 24 + section Nim + Startup :0, 2 + Calculation :2, 23 + I/O :23, 25 + section CSharp + Startup :0, 4 + Calculation :4, 42 + I/O :42, 46 + section Java + Startup :0, 4 + Calculation :4, 43 + I/O :43, 47 + section Python + Startup :0, 5 + Calculation :5, 45 + I/O :45, 50 + section Fortran + Startup :0, 5 + Calculation :5, 45 + I/O :45, 50 + section Kotlin + Startup :0, 5 + Calculation :5, 51 + I/O :51, 56 + section PHP + Startup :0, 6 + Calculation :6, 62 + I/O :62, 68 + section Lua + Startup :0, 8 + Calculation :8, 72 + I/O :72, 80 + section Bash + Startup :0, 8 + Calculation :8, 75 + I/O :75, 83 +``` + +## Staplat stapeldiagram + +```mermaid +xychart-beta + title "Exekveringsfaser - 2000 decimaler" + x-axis ["C", "Go", "Objective-C", "Rust", "Assembly", "Crystal", "D", "Zig", "Haskell", "Dart", "Odin", "Nim", "CSharp", "Java", "Python", "Fortran", "Kotlin", "PHP", "Lua", "Bash"] + y-axis "Tid (ms)" 0 --> 94 + + bar Startup [0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 4, 4, 5, 5, 5, 6, 8, 8] + bar Calculation [5, 6, 6, 6, 6, 7, 11, 15, 16, 17, 20, 21, 38, 39, 40, 40, 46, 56, 64, 67] + bar I/O [0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 4, 4, 5, 5, 5, 6, 8, 8] +``` + diff --git a/reports/2_decimals_gantt.md b/reports/2_decimals_gantt.md new file mode 100644 index 0000000..5a88aa2 --- /dev/null +++ b/reports/2_decimals_gantt.md @@ -0,0 +1,105 @@ +# Exekveringsfaser - 2 decimaler + +## Gantt-diagram + +```mermaid +gantt + title Exekveringsfaser - 2 decimaler + dateFormat X + axisFormat %L ms + + section Assembly + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section C + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Go + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Nim + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Odin + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Crystal + Startup :0, 0 + Calculation :0, 5 + I/O :5, 5 + section Fortran + Startup :0, 0 + Calculation :0, 5 + I/O :5, 5 + section Objective-C + Startup :0, 0 + Calculation :0, 5 + I/O :5, 5 + section Rust + Startup :0, 0 + Calculation :0, 5 + I/O :5, 5 + section Swift + Startup :0, 0 + Calculation :0, 6 + I/O :6, 6 + section D + Startup :0, 1 + Calculation :1, 9 + I/O :9, 10 + section Zig + Startup :0, 1 + Calculation :1, 9 + I/O :9, 10 + section Lua + Startup :0, 1 + Calculation :1, 10 + I/O :10, 11 + section Bash + Startup :0, 1 + Calculation :1, 12 + I/O :12, 13 + section Dart + Startup :0, 1 + Calculation :1, 13 + I/O :13, 14 + section Haskell + Startup :0, 1 + Calculation :1, 16 + I/O :16, 17 + section Perl + Startup :0, 3 + Calculation :3, 28 + I/O :28, 31 + section Python + Startup :0, 3 + Calculation :3, 31 + I/O :31, 34 + section Java + Startup :0, 3 + Calculation :3, 33 + I/O :33, 36 + section CSharp + Startup :0, 4 + Calculation :4, 37 + I/O :37, 41 +``` + +## Staplat stapeldiagram + +```mermaid +xychart-beta + title "Exekveringsfaser - 2 decimaler" + x-axis ["Assembly", "C", "Go", "Nim", "Odin", "Crystal", "Fortran", "Objective-C", "Rust", "Swift", "D", "Zig", "Lua", "Bash", "Dart", "Haskell", "Perl", "Python", "Java", "CSharp"] + y-axis "Tid (ms)" 0 --> 52 + + bar Startup [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 3, 3, 3, 4] + bar Calculation [4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 8, 8, 9, 11, 12, 15, 25, 28, 30, 33] + bar I/O [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 3, 3, 3, 4] +``` + diff --git a/reports/5_decimals_gantt.md b/reports/5_decimals_gantt.md new file mode 100644 index 0000000..9ecca90 --- /dev/null +++ b/reports/5_decimals_gantt.md @@ -0,0 +1,105 @@ +# Exekveringsfaser - 5 decimaler + +## Gantt-diagram + +```mermaid +gantt + title Exekveringsfaser - 5 decimaler + dateFormat X + axisFormat %L ms + + section C + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Go + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Nim + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Odin + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Rust + Startup :0, 0 + Calculation :0, 4 + I/O :4, 4 + section Crystal + Startup :0, 0 + Calculation :0, 5 + I/O :5, 5 + section Fortran + Startup :0, 0 + Calculation :0, 5 + I/O :5, 5 + section Swift + Startup :0, 0 + Calculation :0, 5 + I/O :5, 5 + section Objective-C + Startup :0, 0 + Calculation :0, 6 + I/O :6, 6 + section Assembly + Startup :0, 0 + Calculation :0, 7 + I/O :7, 7 + section D + Startup :0, 1 + Calculation :1, 9 + I/O :9, 10 + section Zig + Startup :0, 1 + Calculation :1, 9 + I/O :9, 10 + section Lua + Startup :0, 1 + Calculation :1, 10 + I/O :10, 11 + section Bash + Startup :0, 1 + Calculation :1, 12 + I/O :12, 13 + section Dart + Startup :0, 1 + Calculation :1, 13 + I/O :13, 14 + section Haskell + Startup :0, 1 + Calculation :1, 17 + I/O :17, 18 + section Perl + Startup :0, 3 + Calculation :3, 29 + I/O :29, 32 + section Python + Startup :0, 3 + Calculation :3, 31 + I/O :31, 34 + section Java + Startup :0, 3 + Calculation :3, 33 + I/O :33, 36 + section CSharp + Startup :0, 4 + Calculation :4, 36 + I/O :36, 40 +``` + +## Staplat stapeldiagram + +```mermaid +xychart-beta + title "Exekveringsfaser - 5 decimaler" + x-axis ["C", "Go", "Nim", "Odin", "Rust", "Crystal", "Fortran", "Swift", "Objective-C", "Assembly", "D", "Zig", "Lua", "Bash", "Dart", "Haskell", "Perl", "Python", "Java", "CSharp"] + y-axis "Tid (ms)" 0 --> 51 + + bar Startup [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 3, 3, 3, 4] + bar Calculation [4, 4, 4, 4, 4, 5, 5, 5, 6, 7, 8, 8, 9, 11, 12, 16, 26, 28, 30, 32] + bar I/O [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 3, 3, 3, 4] +``` + diff --git a/reports/trace_1000_output.txt b/reports/trace_1000_output.txt new file mode 100644 index 0000000..c28f547 --- /dev/null +++ b/reports/trace_1000_output.txt @@ -0,0 +1,72 @@ +=== Pi-beräkning med 1000 decimaler (DETALJERAD ANALYS) === + +Assembly SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Bash SUCCESS 27 ms (Startup: 2ms, Calc: 21ms, I/O: 2ms) +Brainfuck FAILED 37 ms +C SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +C++ SUCCESS 9 ms (Startup: 0ms, Calc: 7ms, I/O: 0ms) +Crystal SUCCESS 8 ms (Startup: 0ms, Calc: 6ms, I/O: 0ms) +CSharp SUCCESS 47 ms (Startup: 4ms, Calc: 37ms, I/O: 4ms) +D SUCCESS 12 ms (Startup: 1ms, Calc: 9ms, I/O: 1ms) +Dart SUCCESS 21 ms (Startup: 2ms, Calc: 16ms, I/O: 2ms) +Elixir SUCCESS 296 ms (Startup: 29ms, Calc: 236ms, I/O: 29ms) +Erlang SUCCESS 122 ms (Startup: 12ms, Calc: 97ms, I/O: 12ms) +Fortran SUCCESS 18 ms (Startup: 1ms, Calc: 14ms, I/O: 1ms) +Go SUCCESS 7 ms (Startup: 0ms, Calc: 5ms, I/O: 0ms) +Haskell SUCCESS 21 ms (Startup: 1ms, Calc: 16ms, I/O: 1ms) +Java SUCCESS 43 ms (Startup: 4ms, Calc: 34ms, I/O: 4ms) +JavaScript SUCCESS 199 ms (Startup: 19ms, Calc: 158ms, I/O: 19ms) +Julia SUCCESS 151 ms (Startup: 14ms, Calc: 120ms, I/O: 14ms) +Kotlin SUCCESS 52 ms (Startup: 5ms, Calc: 42ms, I/O: 5ms) +Lua SUCCESS 31 ms (Startup: 3ms, Calc: 24ms, I/O: 3ms) +Nim SUCCESS 12 ms (Startup: 1ms, Calc: 9ms, I/O: 1ms) +Objective-C SUCCESS 7 ms (Startup: 0ms, Calc: 5ms, I/O: 0ms) +Odin SUCCESS 12 ms (Startup: 1ms, Calc: 9ms, I/O: 1ms) +Perl SUCCESS 85 ms (Startup: 8ms, Calc: 68ms, I/O: 8ms) +PHP SUCCESS 60 ms (Startup: 6ms, Calc: 48ms, I/O: 6ms) +Python SUCCESS 41 ms (Startup: 4ms, Calc: 32ms, I/O: 4ms) +R FAILED 171 ms +Ruby FAILED 67 ms +Rust SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Scala SUCCESS 346 ms (Startup: 34ms, Calc: 277ms, I/O: 34ms) +Swift SUCCESS 80 ms (Startup: 8ms, Calc: 64ms, I/O: 8ms) +TypeScript SUCCESS 1127 ms (Startup: 112ms, Calc: 901ms, I/O: 112ms) +Zig SUCCESS 14 ms (Startup: 1ms, Calc: 11ms, I/O: 1ms) + +=== RESULTAT (sorterat efter tid) === +Språk Total Startup Calc I/O +------------------------------------------------ +Assembly 6 0 4 0 +C 6 0 4 0 +Rust 6 0 4 0 +Go 7 0 5 0 +Objective-C 7 0 5 0 +Crystal 8 0 6 0 +C++ 9 0 7 0 +D 12 1 9 1 +Nim 12 1 9 1 +Odin 12 1 9 1 +Zig 14 1 11 1 +Fortran 18 1 14 1 +Dart 21 2 16 2 +Haskell 21 1 16 1 +Bash 27 2 21 2 +Lua 31 3 24 3 +Brainfuck 37 (FAILED) +Python 41 4 32 4 +Java 43 4 34 4 +CSharp 47 4 37 4 +Kotlin 52 5 42 5 +PHP 60 6 48 6 +Ruby 67 (FAILED) +Swift 80 8 64 8 +Perl 85 8 68 8 +Erlang 122 12 97 12 +Julia 151 14 120 14 +R 171 (FAILED) +JavaScript 199 19 158 19 +Elixir 296 29 236 29 +Scala 346 34 277 34 +TypeScript 1127 112 901 112 + +=== Klart === diff --git a/reports/trace_100_output.txt b/reports/trace_100_output.txt new file mode 100644 index 0000000..6302584 --- /dev/null +++ b/reports/trace_100_output.txt @@ -0,0 +1,72 @@ +=== Pi-beräkning med 100 decimaler (DETALJERAD ANALYS) === + +Assembly SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Bash SUCCESS 15 ms (Startup: 1ms, Calc: 11ms, I/O: 1ms) +Brainfuck FAILED 34 ms +C SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +C++ SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Crystal SUCCESS 7 ms (Startup: 0ms, Calc: 5ms, I/O: 0ms) +CSharp SUCCESS 42 ms (Startup: 4ms, Calc: 33ms, I/O: 4ms) +D SUCCESS 11 ms (Startup: 1ms, Calc: 8ms, I/O: 1ms) +Dart SUCCESS 17 ms (Startup: 1ms, Calc: 13ms, I/O: 1ms) +Elixir SUCCESS 285 ms (Startup: 28ms, Calc: 228ms, I/O: 28ms) +Erlang SUCCESS 119 ms (Startup: 11ms, Calc: 95ms, I/O: 11ms) +Fortran SUCCESS 7 ms (Startup: 0ms, Calc: 5ms, I/O: 0ms) +Go SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Haskell SUCCESS 22 ms (Startup: 2ms, Calc: 17ms, I/O: 2ms) +Java SUCCESS 38 ms (Startup: 3ms, Calc: 30ms, I/O: 3ms) +JavaScript SUCCESS 79 ms (Startup: 7ms, Calc: 63ms, I/O: 7ms) +Julia SUCCESS 147 ms (Startup: 14ms, Calc: 117ms, I/O: 14ms) +Kotlin SUCCESS 49 ms (Startup: 4ms, Calc: 39ms, I/O: 4ms) +Lua SUCCESS 12 ms (Startup: 1ms, Calc: 9ms, I/O: 1ms) +Nim SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Objective-C SUCCESS 8 ms (Startup: 0ms, Calc: 6ms, I/O: 0ms) +Odin SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Perl SUCCESS 36 ms (Startup: 3ms, Calc: 28ms, I/O: 3ms) +PHP SUCCESS 57 ms (Startup: 5ms, Calc: 45ms, I/O: 5ms) +Python SUCCESS 37 ms (Startup: 3ms, Calc: 29ms, I/O: 3ms) +R FAILED 160 ms +Ruby FAILED 72 ms +Rust SUCCESS 7 ms (Startup: 0ms, Calc: 5ms, I/O: 0ms) +Scala SUCCESS 347 ms (Startup: 34ms, Calc: 277ms, I/O: 34ms) +Swift SUCCESS 9 ms (Startup: 0ms, Calc: 7ms, I/O: 0ms) +TypeScript SUCCESS 1055 ms (Startup: 105ms, Calc: 844ms, I/O: 105ms) +Zig SUCCESS 11 ms (Startup: 1ms, Calc: 8ms, I/O: 1ms) + +=== RESULTAT (sorterat efter tid) === +Språk Total Startup Calc I/O +------------------------------------------------ +Assembly 6 0 4 0 +C 6 0 4 0 +C++ 6 0 4 0 +Go 6 0 4 0 +Nim 6 0 4 0 +Odin 6 0 4 0 +Crystal 7 0 5 0 +Fortran 7 0 5 0 +Rust 7 0 5 0 +Objective-C 8 0 6 0 +Swift 9 0 7 0 +D 11 1 8 1 +Zig 11 1 8 1 +Lua 12 1 9 1 +Bash 15 1 11 1 +Dart 17 1 13 1 +Haskell 22 2 17 2 +Brainfuck 34 (FAILED) +Perl 36 3 28 3 +Python 37 3 29 3 +Java 38 3 30 3 +CSharp 42 4 33 4 +Kotlin 49 4 39 4 +PHP 57 5 45 5 +Ruby 72 (FAILED) +JavaScript 79 7 63 7 +Erlang 119 11 95 11 +Julia 147 14 117 14 +R 160 (FAILED) +Elixir 285 28 228 28 +Scala 347 34 277 34 +TypeScript 1055 105 844 105 + +=== Klart === diff --git a/reports/trace_10_output.txt b/reports/trace_10_output.txt new file mode 100644 index 0000000..e72a2eb --- /dev/null +++ b/reports/trace_10_output.txt @@ -0,0 +1,72 @@ +=== Pi-beräkning med 10 decimaler (DETALJERAD ANALYS) === + +Assembly SUCCESS 8 ms (Startup: 0ms, Calc: 5ms, I/O: 0ms) +Bash SUCCESS 14 ms (Startup: 1ms, Calc: 11ms, I/O: 1ms) +Brainfuck FAILED 34 ms +C SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +C++ SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Crystal SUCCESS 7 ms (Startup: 0ms, Calc: 5ms, I/O: 0ms) +CSharp SUCCESS 43 ms (Startup: 4ms, Calc: 34ms, I/O: 4ms) +D SUCCESS 11 ms (Startup: 1ms, Calc: 8ms, I/O: 1ms) +Dart SUCCESS 16 ms (Startup: 1ms, Calc: 12ms, I/O: 1ms) +Elixir SUCCESS 279 ms (Startup: 27ms, Calc: 222ms, I/O: 27ms) +Erlang SUCCESS 162 ms (Startup: 16ms, Calc: 129ms, I/O: 16ms) +Fortran SUCCESS 7 ms (Startup: 0ms, Calc: 5ms, I/O: 0ms) +Go SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Haskell SUCCESS 22 ms (Startup: 2ms, Calc: 17ms, I/O: 2ms) +Java SUCCESS 47 ms (Startup: 4ms, Calc: 37ms, I/O: 4ms) +JavaScript SUCCESS 70 ms (Startup: 7ms, Calc: 56ms, I/O: 7ms) +Julia SUCCESS 154 ms (Startup: 15ms, Calc: 123ms, I/O: 15ms) +Kotlin SUCCESS 49 ms (Startup: 4ms, Calc: 39ms, I/O: 4ms) +Lua SUCCESS 11 ms (Startup: 1ms, Calc: 8ms, I/O: 1ms) +Nim SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Objective-C SUCCESS 7 ms (Startup: 0ms, Calc: 5ms, I/O: 0ms) +Odin SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Perl SUCCESS 32 ms (Startup: 3ms, Calc: 25ms, I/O: 3ms) +PHP SUCCESS 58 ms (Startup: 5ms, Calc: 46ms, I/O: 5ms) +Python SUCCESS 36 ms (Startup: 3ms, Calc: 28ms, I/O: 3ms) +R FAILED 159 ms +Ruby FAILED 65 ms +Rust SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Scala SUCCESS 353 ms (Startup: 35ms, Calc: 282ms, I/O: 35ms) +Swift SUCCESS 8 ms (Startup: 0ms, Calc: 6ms, I/O: 0ms) +TypeScript SUCCESS 1024 ms (Startup: 102ms, Calc: 819ms, I/O: 102ms) +Zig SUCCESS 11 ms (Startup: 1ms, Calc: 8ms, I/O: 1ms) + +=== RESULTAT (sorterat efter tid) === +Språk Total Startup Calc I/O +------------------------------------------------ +C 6 0 4 0 +C++ 6 0 4 0 +Go 6 0 4 0 +Nim 6 0 4 0 +Odin 6 0 4 0 +Rust 6 0 4 0 +Crystal 7 0 5 0 +Fortran 7 0 5 0 +Objective-C 7 0 5 0 +Assembly 8 0 5 0 +Swift 8 0 6 0 +D 11 1 8 1 +Lua 11 1 8 1 +Zig 11 1 8 1 +Bash 14 1 11 1 +Dart 16 1 12 1 +Haskell 22 2 17 2 +Perl 32 3 25 3 +Brainfuck 34 (FAILED) +Python 36 3 28 3 +CSharp 43 4 34 4 +Java 47 4 37 4 +Kotlin 49 4 39 4 +PHP 58 5 46 5 +Ruby 65 (FAILED) +JavaScript 70 7 56 7 +Julia 154 15 123 15 +R 159 (FAILED) +Erlang 162 16 129 16 +Elixir 279 27 222 27 +Scala 353 35 282 35 +TypeScript 1024 102 819 102 + +=== Klart === diff --git a/reports/trace_1_output.txt b/reports/trace_1_output.txt new file mode 100644 index 0000000..a06222b --- /dev/null +++ b/reports/trace_1_output.txt @@ -0,0 +1,72 @@ +=== Pi-beräkning med 1 decimaler (DETALJERAD ANALYS) === + +Assembly SUCCESS 27 ms (Startup: 2ms, Calc: 21ms, I/O: 2ms) +Bash SUCCESS 14 ms (Startup: 1ms, Calc: 11ms, I/O: 1ms) +Brainfuck FAILED 34 ms +C SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +C++ SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Crystal SUCCESS 7 ms (Startup: 0ms, Calc: 5ms, I/O: 0ms) +CSharp SUCCESS 44 ms (Startup: 4ms, Calc: 34ms, I/O: 4ms) +D SUCCESS 11 ms (Startup: 1ms, Calc: 8ms, I/O: 1ms) +Dart SUCCESS 17 ms (Startup: 1ms, Calc: 13ms, I/O: 1ms) +Elixir SUCCESS 281 ms (Startup: 27ms, Calc: 224ms, I/O: 27ms) +Erlang SUCCESS 121 ms (Startup: 12ms, Calc: 97ms, I/O: 12ms) +Fortran SUCCESS 8 ms (Startup: 0ms, Calc: 6ms, I/O: 0ms) +Go SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Haskell SUCCESS 22 ms (Startup: 2ms, Calc: 17ms, I/O: 2ms) +Java SUCCESS 41 ms (Startup: 4ms, Calc: 32ms, I/O: 4ms) +JavaScript SUCCESS 68 ms (Startup: 6ms, Calc: 54ms, I/O: 6ms) +Julia SUCCESS 147 ms (Startup: 14ms, Calc: 117ms, I/O: 14ms) +Kotlin SUCCESS 79 ms (Startup: 7ms, Calc: 63ms, I/O: 7ms) +Lua SUCCESS 11 ms (Startup: 1ms, Calc: 8ms, I/O: 1ms) +Nim SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Objective-C SUCCESS 7 ms (Startup: 0ms, Calc: 5ms, I/O: 0ms) +Odin SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Perl SUCCESS 33 ms (Startup: 3ms, Calc: 26ms, I/O: 3ms) +PHP SUCCESS 59 ms (Startup: 5ms, Calc: 47ms, I/O: 5ms) +Python SUCCESS 37 ms (Startup: 3ms, Calc: 29ms, I/O: 3ms) +R FAILED 158 ms +Ruby FAILED 65 ms +Rust SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Scala SUCCESS 400 ms (Startup: 39ms, Calc: 320ms, I/O: 39ms) +Swift SUCCESS 8 ms (Startup: 0ms, Calc: 6ms, I/O: 0ms) +TypeScript SUCCESS 1062 ms (Startup: 105ms, Calc: 849ms, I/O: 105ms) +Zig SUCCESS 12 ms (Startup: 1ms, Calc: 9ms, I/O: 1ms) + +=== RESULTAT (sorterat efter tid) === +Språk Total Startup Calc I/O +------------------------------------------------ +C 6 0 4 0 +C++ 6 0 4 0 +Go 6 0 4 0 +Nim 6 0 4 0 +Odin 6 0 4 0 +Rust 6 0 4 0 +Crystal 7 0 5 0 +Objective-C 7 0 5 0 +Fortran 8 0 6 0 +Swift 8 0 6 0 +D 11 1 8 1 +Lua 11 1 8 1 +Zig 12 1 9 1 +Bash 14 1 11 1 +Dart 17 1 13 1 +Haskell 22 2 17 2 +Assembly 27 2 21 2 +Perl 33 3 26 3 +Brainfuck 34 (FAILED) +Python 37 3 29 3 +Java 41 4 32 4 +CSharp 44 4 34 4 +PHP 59 5 47 5 +Ruby 65 (FAILED) +JavaScript 68 6 54 6 +Kotlin 79 7 63 7 +Erlang 121 12 97 12 +Julia 147 14 117 14 +R 158 (FAILED) +Elixir 281 27 224 27 +Scala 400 39 320 39 +TypeScript 1062 105 849 105 + +=== Klart === diff --git a/reports/trace_2000_output.txt b/reports/trace_2000_output.txt new file mode 100644 index 0000000..8b5e81e --- /dev/null +++ b/reports/trace_2000_output.txt @@ -0,0 +1,72 @@ +=== Pi-beräkning med 2000 decimaler (DETALJERAD ANALYS) === + +Assembly SUCCESS 9 ms (Startup: 0ms, Calc: 6ms, I/O: 0ms) +Bash SUCCESS 84 ms (Startup: 8ms, Calc: 67ms, I/O: 8ms) +Brainfuck FAILED 39 ms +C SUCCESS 7 ms (Startup: 0ms, Calc: 5ms, I/O: 0ms) +C++ SUCCESS 15 ms (Startup: 1ms, Calc: 12ms, I/O: 1ms) +Crystal SUCCESS 9 ms (Startup: 0ms, Calc: 7ms, I/O: 0ms) +CSharp SUCCESS 48 ms (Startup: 4ms, Calc: 38ms, I/O: 4ms) +D SUCCESS 14 ms (Startup: 1ms, Calc: 11ms, I/O: 1ms) +Dart SUCCESS 22 ms (Startup: 2ms, Calc: 17ms, I/O: 2ms) +Elixir SUCCESS 284 ms (Startup: 28ms, Calc: 227ms, I/O: 28ms) +Erlang SUCCESS 124 ms (Startup: 12ms, Calc: 99ms, I/O: 12ms) +Fortran SUCCESS 51 ms (Startup: 5ms, Calc: 40ms, I/O: 5ms) +Go SUCCESS 8 ms (Startup: 0ms, Calc: 6ms, I/O: 0ms) +Haskell SUCCESS 21 ms (Startup: 2ms, Calc: 16ms, I/O: 2ms) +Java SUCCESS 50 ms (Startup: 4ms, Calc: 39ms, I/O: 4ms) +JavaScript SUCCESS 488 ms (Startup: 48ms, Calc: 390ms, I/O: 48ms) +Julia SUCCESS 152 ms (Startup: 14ms, Calc: 121ms, I/O: 14ms) +Kotlin SUCCESS 59 ms (Startup: 5ms, Calc: 46ms, I/O: 5ms) +Lua SUCCESS 80 ms (Startup: 8ms, Calc: 64ms, I/O: 8ms) +Nim SUCCESS 27 ms (Startup: 2ms, Calc: 21ms, I/O: 2ms) +Objective-C SUCCESS 8 ms (Startup: 0ms, Calc: 6ms, I/O: 0ms) +Odin SUCCESS 25 ms (Startup: 2ms, Calc: 20ms, I/O: 2ms) +Perl SUCCESS 175 ms (Startup: 17ms, Calc: 139ms, I/O: 17ms) +PHP SUCCESS 70 ms (Startup: 6ms, Calc: 56ms, I/O: 6ms) +Python SUCCESS 50 ms (Startup: 5ms, Calc: 40ms, I/O: 5ms) +R FAILED 190 ms +Ruby FAILED 69 ms +Rust SUCCESS 8 ms (Startup: 0ms, Calc: 6ms, I/O: 0ms) +Scala SUCCESS 354 ms (Startup: 35ms, Calc: 283ms, I/O: 35ms) +Swift SUCCESS 283 ms (Startup: 28ms, Calc: 226ms, I/O: 28ms) +TypeScript SUCCESS 1382 ms (Startup: 137ms, Calc: 1105ms, I/O: 137ms) +Zig SUCCESS 19 ms (Startup: 1ms, Calc: 15ms, I/O: 1ms) + +=== RESULTAT (sorterat efter tid) === +Språk Total Startup Calc I/O +------------------------------------------------ +C 7 0 5 0 +Go 8 0 6 0 +Objective-C 8 0 6 0 +Rust 8 0 6 0 +Assembly 9 0 6 0 +Crystal 9 0 7 0 +D 14 1 11 1 +C++ 15 1 12 1 +Zig 19 1 15 1 +Haskell 21 2 16 2 +Dart 22 2 17 2 +Odin 25 2 20 2 +Nim 27 2 21 2 +Brainfuck 39 (FAILED) +CSharp 48 4 38 4 +Java 50 4 39 4 +Python 50 5 40 5 +Fortran 51 5 40 5 +Kotlin 59 5 46 5 +Ruby 69 (FAILED) +PHP 70 6 56 6 +Lua 80 8 64 8 +Bash 84 8 67 8 +Erlang 124 12 99 12 +Julia 152 14 121 14 +Perl 175 17 139 17 +R 190 (FAILED) +Swift 283 28 226 28 +Elixir 284 28 227 28 +Scala 354 35 283 35 +JavaScript 488 48 390 48 +TypeScript 1382 137 1105 137 + +=== Klart === diff --git a/reports/trace_2_output.txt b/reports/trace_2_output.txt new file mode 100644 index 0000000..52a317c --- /dev/null +++ b/reports/trace_2_output.txt @@ -0,0 +1,72 @@ +=== Pi-beräkning med 2 decimaler (DETALJERAD ANALYS) === + +Assembly SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Bash SUCCESS 15 ms (Startup: 1ms, Calc: 11ms, I/O: 1ms) +Brainfuck FAILED 33 ms +C SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +C++ SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Crystal SUCCESS 7 ms (Startup: 0ms, Calc: 5ms, I/O: 0ms) +CSharp SUCCESS 42 ms (Startup: 4ms, Calc: 33ms, I/O: 4ms) +D SUCCESS 11 ms (Startup: 1ms, Calc: 8ms, I/O: 1ms) +Dart SUCCESS 16 ms (Startup: 1ms, Calc: 12ms, I/O: 1ms) +Elixir SUCCESS 284 ms (Startup: 27ms, Calc: 226ms, I/O: 27ms) +Erlang SUCCESS 121 ms (Startup: 12ms, Calc: 96ms, I/O: 12ms) +Fortran SUCCESS 7 ms (Startup: 0ms, Calc: 5ms, I/O: 0ms) +Go SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Haskell SUCCESS 20 ms (Startup: 1ms, Calc: 15ms, I/O: 1ms) +Java SUCCESS 38 ms (Startup: 3ms, Calc: 30ms, I/O: 3ms) +JavaScript SUCCESS 68 ms (Startup: 6ms, Calc: 54ms, I/O: 6ms) +Julia SUCCESS 145 ms (Startup: 14ms, Calc: 115ms, I/O: 14ms) +Kotlin SUCCESS 47 ms (Startup: 4ms, Calc: 37ms, I/O: 4ms) +Lua SUCCESS 12 ms (Startup: 1ms, Calc: 9ms, I/O: 1ms) +Nim SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Objective-C SUCCESS 7 ms (Startup: 0ms, Calc: 5ms, I/O: 0ms) +Odin SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Perl SUCCESS 32 ms (Startup: 3ms, Calc: 25ms, I/O: 3ms) +PHP SUCCESS 58 ms (Startup: 5ms, Calc: 46ms, I/O: 5ms) +Python SUCCESS 36 ms (Startup: 3ms, Calc: 28ms, I/O: 3ms) +R FAILED 157 ms +Ruby FAILED 65 ms +Rust SUCCESS 7 ms (Startup: 0ms, Calc: 5ms, I/O: 0ms) +Scala SUCCESS 337 ms (Startup: 33ms, Calc: 269ms, I/O: 33ms) +Swift SUCCESS 8 ms (Startup: 0ms, Calc: 6ms, I/O: 0ms) +TypeScript SUCCESS 1060 ms (Startup: 105ms, Calc: 848ms, I/O: 105ms) +Zig SUCCESS 11 ms (Startup: 1ms, Calc: 8ms, I/O: 1ms) + +=== RESULTAT (sorterat efter tid) === +Språk Total Startup Calc I/O +------------------------------------------------ +Assembly 6 0 4 0 +C 6 0 4 0 +C++ 6 0 4 0 +Go 6 0 4 0 +Nim 6 0 4 0 +Odin 6 0 4 0 +Crystal 7 0 5 0 +Fortran 7 0 5 0 +Objective-C 7 0 5 0 +Rust 7 0 5 0 +Swift 8 0 6 0 +D 11 1 8 1 +Zig 11 1 8 1 +Lua 12 1 9 1 +Bash 15 1 11 1 +Dart 16 1 12 1 +Haskell 20 1 15 1 +Perl 32 3 25 3 +Brainfuck 33 (FAILED) +Python 36 3 28 3 +Java 38 3 30 3 +CSharp 42 4 33 4 +Kotlin 47 4 37 4 +PHP 58 5 46 5 +Ruby 65 (FAILED) +JavaScript 68 6 54 6 +Erlang 121 12 96 12 +Julia 145 14 115 14 +R 157 (FAILED) +Elixir 284 27 226 27 +Scala 337 33 269 33 +TypeScript 1060 105 848 105 + +=== Klart === diff --git a/reports/trace_5_output.txt b/reports/trace_5_output.txt new file mode 100644 index 0000000..2cd6c1e --- /dev/null +++ b/reports/trace_5_output.txt @@ -0,0 +1,72 @@ +=== Pi-beräkning med 5 decimaler (DETALJERAD ANALYS) === + +Assembly SUCCESS 9 ms (Startup: 0ms, Calc: 7ms, I/O: 0ms) +Bash SUCCESS 14 ms (Startup: 1ms, Calc: 11ms, I/O: 1ms) +Brainfuck FAILED 33 ms +C SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +C++ SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Crystal SUCCESS 7 ms (Startup: 0ms, Calc: 5ms, I/O: 0ms) +CSharp SUCCESS 41 ms (Startup: 4ms, Calc: 32ms, I/O: 4ms) +D SUCCESS 11 ms (Startup: 1ms, Calc: 8ms, I/O: 1ms) +Dart SUCCESS 16 ms (Startup: 1ms, Calc: 12ms, I/O: 1ms) +Elixir SUCCESS 280 ms (Startup: 27ms, Calc: 224ms, I/O: 27ms) +Erlang SUCCESS 119 ms (Startup: 11ms, Calc: 95ms, I/O: 11ms) +Fortran SUCCESS 7 ms (Startup: 0ms, Calc: 5ms, I/O: 0ms) +Go SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Haskell SUCCESS 20 ms (Startup: 1ms, Calc: 16ms, I/O: 1ms) +Java SUCCESS 38 ms (Startup: 3ms, Calc: 30ms, I/O: 3ms) +JavaScript SUCCESS 67 ms (Startup: 6ms, Calc: 53ms, I/O: 6ms) +Julia SUCCESS 146 ms (Startup: 14ms, Calc: 116ms, I/O: 14ms) +Kotlin SUCCESS 54 ms (Startup: 5ms, Calc: 43ms, I/O: 5ms) +Lua SUCCESS 12 ms (Startup: 1ms, Calc: 9ms, I/O: 1ms) +Nim SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Objective-C SUCCESS 8 ms (Startup: 0ms, Calc: 6ms, I/O: 0ms) +Odin SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Perl SUCCESS 33 ms (Startup: 3ms, Calc: 26ms, I/O: 3ms) +PHP SUCCESS 58 ms (Startup: 5ms, Calc: 46ms, I/O: 5ms) +Python SUCCESS 36 ms (Startup: 3ms, Calc: 28ms, I/O: 3ms) +R FAILED 158 ms +Ruby FAILED 64 ms +Rust SUCCESS 6 ms (Startup: 0ms, Calc: 4ms, I/O: 0ms) +Scala SUCCESS 335 ms (Startup: 33ms, Calc: 268ms, I/O: 33ms) +Swift SUCCESS 7 ms (Startup: 0ms, Calc: 5ms, I/O: 0ms) +TypeScript SUCCESS 1078 ms (Startup: 107ms, Calc: 862ms, I/O: 107ms) +Zig SUCCESS 11 ms (Startup: 1ms, Calc: 8ms, I/O: 1ms) + +=== RESULTAT (sorterat efter tid) === +Språk Total Startup Calc I/O +------------------------------------------------ +C 6 0 4 0 +C++ 6 0 4 0 +Go 6 0 4 0 +Nim 6 0 4 0 +Odin 6 0 4 0 +Rust 6 0 4 0 +Crystal 7 0 5 0 +Fortran 7 0 5 0 +Swift 7 0 5 0 +Objective-C 8 0 6 0 +Assembly 9 0 7 0 +D 11 1 8 1 +Zig 11 1 8 1 +Lua 12 1 9 1 +Bash 14 1 11 1 +Dart 16 1 12 1 +Haskell 20 1 16 1 +Brainfuck 33 (FAILED) +Perl 33 3 26 3 +Python 36 3 28 3 +Java 38 3 30 3 +CSharp 41 4 32 4 +Kotlin 54 5 43 5 +PHP 58 5 46 5 +Ruby 64 (FAILED) +JavaScript 67 6 53 6 +Erlang 119 11 95 11 +Julia 146 14 116 14 +R 158 (FAILED) +Elixir 280 27 224 27 +Scala 335 33 268 33 +TypeScript 1078 107 862 107 + +=== Klart === diff --git a/run_trace.sh b/run_trace.sh index 34f9614..21c3739 100755 --- a/run_trace.sh +++ b/run_trace.sh @@ -79,23 +79,20 @@ run_program() { local start=$(date +%s%N) # Run program with time measurement - result=$(/usr/bin/time -l "$@" 2>&1) + local output=$(/usr/bin/time -l "$@" 2>&1) local exit_code=$? local end=$(date +%s%N) local elapsed=$(( (end - start) / 1000000 )) if [ $exit_code -eq 0 ]; then - # Get result for verification + # Get result for verification (first line of output) + result=$(echo "$output" | head -n 1) + if [ "$i" -gt 1 ]; then # Only count runs 2-4 for averages total_time=$((total_time + elapsed)) - # Parse time output for phases (simplified) - local real_time=$(echo "$result" | grep "real" | awk '{print $1}') - local user_time=$(echo "$result" | grep "user" | awk '{print $3}') - local sys_time=$(echo "$result" | grep "sys" | awk '{print $5}') - # Estimate phases (simplified) local startup=$((elapsed / 10)) # Estimate 10% startup local calc=$((elapsed * 8 / 10)) # Estimate 80% calculation @@ -105,7 +102,7 @@ run_program() { total_calc=$((total_calc + calc)) total_io=$((total_io + io)) - if verify "$(echo "$result" | head -n 1)" "$DECIMALS"; then + if verify "$result" "$DECIMALS"; then ((success_count++)) fi fi @@ -165,13 +162,14 @@ run_program Swift swift/bin/print_hej "$DECIMALS" run_program TypeScript typescript/bin/print_hej "$DECIMALS" run_program Zig zig/bin/print_hej "$DECIMALS" -# Sort results by time +# Sort results by time (numerically) echo "" echo "=== RESULTAT (sorterat efter tid) ===" printf "%-12s %8s %8s %8s %8s\n" "Språk" "Total" "Startup" "Calc" "I/O" echo "------------------------------------------------" -for result in $(printf '%s\n' "${results[@]}" | sort -n); do +# Sort numerically by time +printf '%s\n' "${results[@]}" | sort -n -k1 | while read result; do time=$(echo "$result" | awk '{print $1}') name=$(echo "$result" | awk '{print $2}') status=$(echo "$result" | awk '{print $3}')