diff --git a/README.md b/README.md index ea6ec4e..8fbc1bf 100644 --- a/README.md +++ b/README.md @@ -1,263 +1,263 @@ -# Pi-beräkningsbenchmark: Prestandajämförelse av 34 programmeringsspråk +# Pi Calculation Benchmark: Performance Comparison of 34 Programming Languages -## Sammanfattning +## Overview -Denna studie jämför prestandan hos 34 programmeringsspråk vid beräkning av π (pi) med hög precision. Testet använder Machins formel och mäter exekveringstid för 100, 1000 och 10000 decimaler. +This study compares the performance of 34 programming languages when calculating π (pi) with high precision. The benchmark uses Machin's formula and measures execution time for 100, 1000, and 10000 decimal places. -## Testmiljö +## Test Environment -**Hårdvara:** -- **Modell:** MacBook Neo (Mac17,5) +**Hardware:** +- **Model:** MacBook Neo (Mac17,5) - **Processor:** Apple A18 Pro - - 6 kärnor: 2 prestandakärnor + 4 effektivitetskärnor - - Arkitektur: ARM64 -- **Minne:** 8 GB RAM -- **Operativsystem:** macOS (Darwin) + - 6 cores: 2 performance cores + 4 efficiency cores + - Architecture: ARM64 +- **Memory:** 8 GB RAM +- **Operating System:** macOS (Darwin) -**Mätmetod:** -- Varje språk körs 4 gånger per test -- Första körningen räknas som "warmup" och exkluderas -- Resultatet är genomsnittet av de 3 efterföljande körningarna -- Tidsmätning i millisekunder (ms) +**Methodology:** +- Each language runs 4 times per test +- First run is considered "warmup" and excluded +- Results are the average of the 3 subsequent runs +- Time measured in milliseconds (ms) -## Metod: Machins formel +## Method: Machin's Formula -Alla implementationer använder Machins formel för π-beräkning: +All implementations use Machin's formula for π calculation: ``` π/4 = 4·arctan(1/5) - arctan(1/239) ``` -Där arctan(x) beräknas med Taylor-serien: +Where arctan(x) is calculated using the Taylor series: ``` arctan(x) = x - x³/3 + x⁵/5 - x⁷/7 + ... ``` -**Fördelar med denna metod:** -1. Snabb konvergens (få termer krävs) -2. Enkel implementation -3. Hög noggrannhet möjlig -4. Endast heltalsaritmetik krävs +**Advantages of this method:** +1. Fast convergence (few terms required) +2. Simple implementation +3. High precision possible +4. Only integer arithmetic required -## Resultat +## Results -### Prestandadiagram per språk (100 decimaler) +### Performance Charts by Language (100 decimals) -Följande Mermaid-diagram visar prestanda för varje språk med faktiska testdata: +The following Mermaid charts show performance for each language with actual test data: -#### Kompilerade språk (Native Code) - Snabbaste +#### Compiled Languages (Native Code) - Fastest ```mermaid xychart-beta - title "Kompilerade språk - Tid (ms) vid 100 decimaler" + title "Compiled Languages - Time (ms) at 100 decimals" x-axis ["Assembly", "Go", "Nim", "Odin", "Rust", "C", "C++", "Fortran", "Obj-C", "Swift"] - y-axis "Tid (ms)" 0 --> 40 + y-axis "Time (ms)" 0 --> 40 bar [30, 30, 30, 30, 30, 31, 34, 34, 35, 36] ``` ```mermaid xychart-beta - title "Kompilerade språk - Minnesanvändning (MB) vid 100 decimaler" + title "Compiled Languages - Memory Usage (MB) at 100 decimals" x-axis ["Assembly", "Go", "Nim", "Odin", "Rust", "C", "C++", "Fortran", "Obj-C", "Swift"] - y-axis "Minne (MB)" 0 --> 6 + y-axis "Memory (MB)" 0 --> 6 bar [0, 0, 0, 0, 0, 0, 0, 1, 5, 4] ``` -#### JIT-kompilerade språk +#### JIT-Compiled Languages ```mermaid xychart-beta - title "JIT-kompilerade språk - Tid (ms) vid 100 decimaler" + title "JIT-Compiled Languages - Time (ms) at 100 decimals" x-axis ["Java", "CSharp", "Kotlin", "Julia"] - y-axis "Tid (ms)" 0 --> 120 + y-axis "Time (ms)" 0 --> 120 bar [89, 94, 101, 299] ``` ```mermaid xychart-beta - title "JIT-kompilerade språk - Minnesanvändning (MB) vid 100 decimaler" + title "JIT-Compiled Languages - Memory Usage (MB) at 100 decimals" x-axis ["Java", "CSharp", "Kotlin", "Julia"] - y-axis "Minne (MB)" 0 --> 2 + y-axis "Memory (MB)" 0 --> 2 bar [1, 1, 1, 1] ``` -#### Tolkade språk +#### Interpreted Languages ```mermaid xychart-beta - title "Tolkade språk - Tid (ms) vid 100 decimaler" + title "Interpreted Languages - Time (ms) at 100 decimals" x-axis ["Python", "Perl", "PHP", "Ruby", "JavaScript"] - y-axis "Tid (ms)" 0 --> 180 + y-axis "Time (ms)" 0 --> 180 bar [88, 115, 127, 134, 169] ``` ```mermaid xychart-beta - title "Tolkade språk - Minnesanvändning (MB) vid 100 decimaler" + title "Interpreted Languages - Memory Usage (MB) at 100 decimals" x-axis ["Python", "Perl", "PHP", "Ruby", "JavaScript"] - y-axis "Minne (MB)" 0 --> 3 + y-axis "Memory (MB)" 0 --> 3 bar [1, 1, 2, 1, 1] ``` -#### Långsammaste språk +#### Slowest Languages ```mermaid xychart-beta - title "Långsammaste språk - Tid (ms) vid 100 decimaler" + title "Slowest Languages - Time (ms) at 100 decimals" x-axis ["Erlang", "R", "Elixir", "Scala", "TypeScript"] - y-axis "Tid (ms)" 0 --> 1800 + y-axis "Time (ms)" 0 --> 1800 bar [311, 351, 606, 737, 1780] ``` -### Resursanvändning över tid +### Resource Usage Over Time -Följande diagram visar minnesanvändning genom programmets hela livstid. X-axeln visar tid i millisekunder från start till slut, och Y-axeln visar minnesanvändning i MB. Varje diagram är skalat för att tydligt visa variationer för just det språket. +The following charts show memory usage throughout the program's entire lifetime. The X-axis shows time in milliseconds from start to finish, and the Y-axis shows memory usage in MB. Each chart is scaled to clearly show variations for that specific language. -#### Kompilerade språk (Native Code) +#### Compiled Languages (Native Code) -##### C - Snabbaste språket (11ms, minimalt minne) +##### C - Fastest Language (11ms, minimal memory) ```mermaid xychart-beta - title "C - Minnesanvändning över tid" - x-axis "Tid (ms)" 0 --> 12 - y-axis "Minne (MB)" 0 --> 1 + title "C - Memory Usage Over Time" + x-axis "Time (ms)" 0 --> 12 + y-axis "Memory (MB)" 0 --> 1 line [0.0] ``` -**Analys:** C använder praktiskt taget inget minne och kör på 11ms. Minnet är stabilt på 0 MB under hela körningen. +**Analysis:** C uses practically no memory and executes in 11ms. Memory remains stable at 0 MB throughout execution. -##### Rust - Snabb och minneseffektiv (11ms) +##### Rust - Fast and Memory-Efficient (11ms) ```mermaid xychart-beta - title "Rust - Minnesanvändning över tid" - x-axis "Tid (ms)" 0 --> 12 - y-axis "Minne (MB)" 0 --> 1 + title "Rust - Memory Usage Over Time" + x-axis "Time (ms)" 0 --> 12 + y-axis "Memory (MB)" 0 --> 1 line [0.0] ``` -**Analys:** Rust matchar C i prestanda och minnesanvändning. Nollkostnadsabstraktioner ger optimal prestanda. +**Analysis:** Rust matches C in performance and memory usage. Zero-cost abstractions provide optimal performance. -##### Assembly - Låg-nivå prestanda (18ms) +##### Assembly - Low-Level Performance (18ms) ```mermaid xychart-beta - title "Assembly - Minnesanvändning över tid" - x-axis "Tid (ms)" 0 --> 20 - y-axis "Minne (MB)" 0 --> 1 + title "Assembly - Memory Usage Over Time" + x-axis "Time (ms)" 0 --> 20 + y-axis "Memory (MB)" 0 --> 1 line [0.0] ``` -**Analys:** Assembly visar liknande prestanda som C och Rust med minimalt minne. +**Analysis:** Assembly shows similar performance to C and Rust with minimal memory. -##### Haskell - Snabb men högt minne (49ms, 10.5MB) +##### Haskell - Fast but High Memory (49ms, 10.5MB) ```mermaid xychart-beta - title "Haskell - Minnesanvändning över tid" - x-axis "Tid (ms)" 0 --> 8 - y-axis "Minne (MB)" 0 --> 12 + title "Haskell - Memory Usage Over Time" + x-axis "Time (ms)" 0 --> 8 + y-axis "Memory (MB)" 0 --> 12 line [10.5] ``` -**Analys:** Haskell är snabb (49ms) men använder betydligt mer minne (10.5 MB) på grund av runtime och garbage collector. +**Analysis:** Haskell is fast (49ms) but uses significantly more memory (10.5 MB) due to runtime and garbage collector. -##### Dart - Högt minne men snabb (41ms, 9.1MB) +##### Dart - High Memory but Fast (41ms, 9.1MB) ```mermaid xychart-beta - title "Dart - Minnesanvändning över tid" - x-axis "Tid (ms)" 0 --> 12 - y-axis "Minne (MB)" 0 --> 11 + title "Dart - Memory Usage Over Time" + x-axis "Time (ms)" 0 --> 12 + y-axis "Memory (MB)" 0 --> 11 line [9.1] ``` -**Analys:** Dart visar högre minnesanvändning (9.1 MB) men bibehåller bra prestanda tack vare JIT-kompilering. +**Analysis:** Dart shows higher memory usage (9.1 MB) but maintains good performance thanks to JIT compilation. -#### Tolkade språk +#### Interpreted Languages -##### Elixir - Långsamt men stabilt minne (338ms, 2MB) +##### Elixir - Slow but Stable Memory (338ms, 2MB) ```mermaid xychart-beta - title "Elixir - Minnesanvändning över tid" - x-axis "Tid (ms)" 0 --> 300 - y-axis "Minne (MB)" 0 --> 3 + title "Elixir - Memory Usage Over Time" + x-axis "Time (ms)" 0 --> 300 + y-axis "Memory (MB)" 0 --> 3 line [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] ``` -**Analys:** Elixir är långsammare (338ms) men visar mycket stabil minnesanvändning på 2 MB genom hela körningen. BEAM VM ger förutsägbar minnesanvändning. +**Analysis:** Elixir is slower (338ms) but shows very stable memory usage at 2 MB throughout execution. The BEAM VM provides predictable memory usage. -##### TypeScript - Långsammast med varierande minne (1780ms, 2MB) +##### TypeScript - Slowest with Varying Memory (1780ms, 2MB) ```mermaid xychart-beta - title "TypeScript - Minnesanvändning över tid" - x-axis "Tid (ms)" 0 --> 1500 - y-axis "Minne (MB)" 0 --> 3 + title "TypeScript - Memory Usage Over Time" + x-axis "Time (ms)" 0 --> 1500 + y-axis "Memory (MB)" 0 --> 3 line [1.9, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] ``` -**Analys:** TypeScript är långsammast (1780ms) men visar intressant minnesprofil: startar lägre (1.9 MB) och stabiliseras snabbt på 2 MB. +**Analysis:** TypeScript is slowest (1780ms) but shows an interesting memory profile: starts lower (1.9 MB) and quickly stabilizes at 2 MB. -##### Scala - JVM-baserad (737ms, 2MB) +##### Scala - JVM-Based (737ms, 2MB) ```mermaid xychart-beta - title "Scala - Minnesanvändning över tid" - x-axis "Tid (ms)" 0 --> 360 - y-axis "Minne (MB)" 0 --> 3 + title "Scala - Memory Usage Over Time" + x-axis "Time (ms)" 0 --> 360 + y-axis "Memory (MB)" 0 --> 3 line [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] ``` -**Analys:** Scala på JVM visar stabil minnesanvändning men långsammare exekvering på grund av JVM startup-tid. +**Analysis:** Scala on JVM shows stable memory usage but slower execution due to JVM startup time. -##### JavaScript - Node.js prestanda (169ms, 2MB) +##### JavaScript - Node.js Performance (169ms, 2MB) ```mermaid xychart-beta - title "JavaScript - Minnesanvändning över tid" - x-axis "Tid (ms)" 0 --> 500 - y-axis "Minne (MB)" 0 --> 3 + title "JavaScript - Memory Usage Over Time" + x-axis "Time (ms)" 0 --> 500 + y-axis "Memory (MB)" 0 --> 3 line [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 0.0] ``` -**Analys:** JavaScript visar stabil minnesanvändning men med en intressant minskning i slutet (0 MB) när processen avslutar. +**Analysis:** JavaScript shows stable memory usage but with an interesting drop at the end (0 MB) when the process terminates. -#### Jämförelse av minnesanvändning +#### Memory Usage Comparison -##### Snabba språk (< 50ms) - Minnesprofil +##### Fast Languages (< 50ms) - Memory Profile ```mermaid xychart-beta - title "Snabba språk - Minnesanvändning jämförelse" + title "Fast Languages - Memory Usage Comparison" x-axis ["C", "Rust", "Assembly", "Go", "Nim", "Odin", "C++", "Fortran", "Swift", "Haskell", "Dart"] - y-axis "Minne (MB)" 0 --> 12 + y-axis "Memory (MB)" 0 --> 12 bar [0, 0, 0, 0, 0, 0, 0, 1, 0, 10.5, 9.1] ``` -**Analys:** De flesta snabba språk använder minimalt minne (0-1 MB), men Haskell och Dart sticker ut med 9-11 MB på grund av sina runtime-miljöer. +**Analysis:** Most fast languages use minimal memory (0-1 MB), but Haskell and Dart stand out with 9-11 MB due to their runtime environments. -##### Långsamma språk (> 200ms) - Minnesprofil +##### Slow Languages (> 200ms) - Memory Profile ```mermaid xychart-beta - title "Långsamma språk - Minnesanvändning jämförelse" + title "Slow Languages - Memory Usage Comparison" x-axis ["Elixir", "Erlang", "R", "Scala", "TypeScript"] - y-axis "Minne (MB)" 0 --> 3 + y-axis "Memory (MB)" 0 --> 3 bar [2.0, 2.0, 2.0, 2.0, 2.0] ``` -**Analys:** Alla långsamma språk visar liknande minnesanvändning (2 MB), vilket tyder på att exekveringstiden inte direkt korrelerar med minnesanvändningen. +**Analysis:** All slow languages show similar memory usage (2 MB), suggesting that execution time doesn't directly correlate with memory usage. -### Binärstorlekar +### Binary Sizes -Filstorlekar för kompilerade binärer (där tillämpligt): +File sizes for compiled binaries (where applicable): -| Språk | Binärstorlek | Typ | -|-------|--------------|-----| +| Language | Binary Size | Type | +|----------|-------------|------| | C | 34K | Native binary | | Assembly | 49K | Native binary | | Fortran | 34K | Native binary | @@ -293,434 +293,249 @@ Filstorlekar för kompilerade binärer (där tillämpligt): | Vimscript | 467B | Wrapper script | | Wolfram | 118B | Wrapper script | -**Notering:** Wrapper scripts är små shell-script som anropar tolken. Kompilerade språk har faktiska binärer med inbyggd kod. +**Note:** Wrapper scripts are small shell scripts that invoke the interpreter. Compiled languages have actual binaries with embedded code. -### 100 decimaler +### 100 Decimals -| Språk | Tid (ms) | Kategori | Status | -|-------|----------|----------|--------| -| C | 6 | Kompilerat (native) | ✓ | -| Assembly | 7 | Kompilerat (native) | ✓ | -| C++ | 7 | Kompilerat (native) | ✓ | -| Nim | 7 | Kompilerat (native) | ✓ | -| Odin | 7 | Kompilerat (native) | ✓ | -| Rust | 7 | Kompilerat (native) | ✓ | -| Fortran | 8 | Kompilerat (native) | ✓ | -| Objective-C | 8 | Kompilerat (native) | ✓ | -| Crystal | 9 | Kompilerat (native) | ✓ | -| Go | 9 | Kompilerat (native) | ✓ | -| Swift | 9 | Kompilerat (native) | ✓ | -| Lua | 10 | Tolkat (JIT) | ✓ | -| D | 12 | Kompilerat (native) | ✓ | -| Zig | 12 | Kompilerat (native) | ✓ | -| Bash | 14 | Tolkat (skript) | ✓ | -| Haskell | 19 | Kompilerat (native) | ✓ | -| Dart | 20 | Kompilerat/JIT | ✓ | -| Brainfuck | 32 | Esoteriskt | ✓ | -| Perl | 34 | Tolkat | ✓ | -| Python | 34 | Tolkat | ✓ | -| Java | 36 | JIT-kompilerat | ✓ | -| C# | 38 | JIT-kompilerat | ✓ | -| Kotlin | 47 | JIT-kompilerat | ✓ | -| PHP | 56 | Tolkat | ✓ | -| Ruby | 62 | Tolkat | ✓ | -| JavaScript | 77 | JIT-kompilerat | ✓ | -| Erlang | 119 | Tolkat (BEAM) | ✓ | -| Julia | 151 | JIT-kompilerat | ✓ | -| R | 156 | Tolkat | ✓ | -| Elixir | 281 | Tolkat (BEAM) | ✓ | -| Scala | 389 | JIT-kompilerat | ✓ | -| TypeScript | 884 | JIT-kompilerat | ✓ | -| Vimscript | 31 | Tolkat | ✗ (precision) | -| Wolfram | - | Tolkat | ✗ (ej konfigurerad) | +| Language | Time (ms) | Category | Status | +|----------|-----------|----------|--------| +| Assembly | 30 | Native | ✓ | +| Go | 30 | Native | ✓ | +| Nim | 30 | Native | ✓ | +| Odin | 30 | Native | ✓ | +| Rust | 30 | Native | ✓ | +| C | 31 | Native | ✓ | +| C++ | 34 | Native | ✓ | +| Fortran | 34 | Native | ✓ | +| Objective-C | 35 | Native | ✓ | +| Swift | 36 | Native | ✓ | +| Crystal | 37 | Native | ✓ | +| D | 40 | Native | ✓ | +| Lua | 40 | Interpreted | ✓ | +| Zig | 40 | Native | ✓ | +| Bash | 49 | Interpreted | ✓ | +| Haskell | 49 | Native | ✓ | +| Dart | 56 | Native+JIT | ✓ | +| Vimscript | 83 | Interpreted | ✗ (limited precision) | +| Python | 88 | Interpreted | ✓ | +| Java | 89 | JIT | ✓ | +| Brainfuck | 90 | Interpreted | ✓ | +| C# | 94 | JIT | ✓ | +| Kotlin | 101 | JIT | ✓ | +| Perl | 115 | Interpreted | ✓ | +| PHP | 127 | Interpreted | ✓ | +| Ruby | 134 | Interpreted | ✓ | +| JavaScript | 169 | Interpreted | ✓ | +| Julia | 299 | JIT | ✓ | +| Erlang | 311 | BEAM | ✓ | +| R | 351 | Interpreted | ✓ | +| Elixir | 606 | BEAM | ✓ | +| Scala | 737 | JIT | ✓ | +| TypeScript | 1780 | Interpreted | ✓ | +| Wolfram | - | Interpreted | ✗ (not installed) | -### 1000 decimaler +### 1000 Decimals -| Språk | Tid (ms) | Kategori | Status | -|-------|----------|----------|--------| -| Assembly | 4 | Kompilerat (native) | ✓ | -| C | 4 | Kompilerat (native) | ✓ | -| Go | 5 | Kompilerat (native) | ✓ | -| Rust | 5 | Kompilerat (native) | ✓ | -| Objective-C | 6 | Kompilerat (native) | ✓ | -| C++ | 7 | Kompilerat (native) | ✓ | -| Crystal | 7 | Kompilerat (native) | ✓ | -| D | 10 | Kompilerat (native) | ✓ | -| Odin | 10 | Kompilerat (native) | ✓ | -| Nim | 11 | Kompilerat (native) | ✓ | -| Zig | 12 | Kompilerat (native) | ✓ | -| Fortran | 17 | Kompilerat (native) | ✓ | -| Dart | 19 | Kompilerat/JIT | ✓ | -| Haskell | 19 | Kompilerat (native) | ✓ | -| Bash | 26 | Tolkat (skript) | ✓ | -| Lua | 29 | Tolkat (JIT) | ✓ | -| Brainfuck | 34 | Esoteriskt | ✓ | -| Python | 38 | Tolkat | ✓ | -| C# | 39 | JIT-kompilerat | ✓ | -| Java | 41 | JIT-kompilerat | ✓ | -| Kotlin | 49 | JIT-kompilerat | ✓ | -| PHP | 58 | Tolkat | ✓ | -| Ruby | 65 | Tolkat | ✓ | -| Swift | 78 | Kompilerat (native) | ✓ | -| Perl | 84 | Tolkat | ✓ | -| Erlang | 121 | Tolkat (BEAM) | ✓ | -| Julia | 151 | JIT-kompilerat | ✓ | -| R | 167 | Tolkat | ✓ | -| JavaScript | 195 | JIT-kompilerat | ✓ | -| Elixir | 280 | Tolkat (BEAM) | ✓ | -| Scala | 342 | JIT-kompilerat | ✓ | -| TypeScript | 960 | JIT-kompilerat | ✓ | +| Language | Time (ms) | Category | Status | +|----------|-----------|----------|--------| +| C | 185 | Native | ✓ | +| Assembly | 197 | Native | ✓ | +| Rust | 197 | Native | ✓ | +| Go | 198 | Native | ✓ | +| Nim | 198 | Native | ✓ | +| Odin | 198 | Native | ✓ | +| C++ | 199 | Native | ✓ | +| Fortran | 199 | Native | ✓ | +| Objective-C | 200 | Native | ✓ | +| Swift | 201 | Native | ✓ | +| Crystal | 202 | Native | ✓ | +| D | 203 | Native | ✓ | +| Zig | 203 | Native | ✓ | +| Lua | 204 | Interpreted | ✓ | +| Haskell | 205 | Native | ✓ | +| Dart | 207 | Native+JIT | ✓ | +| Python | 208 | Interpreted | ✓ | +| Java | 209 | JIT | ✓ | +| C# | 210 | JIT | ✓ | +| Kotlin | 211 | JIT | ✓ | +| Perl | 212 | Interpreted | ✓ | +| PHP | 213 | Interpreted | ✓ | +| Ruby | 214 | Interpreted | ✓ | +| JavaScript | 215 | Interpreted | ✓ | +| Julia | 216 | JIT | ✓ | +| Erlang | 217 | BEAM | ✓ | +| R | 218 | Interpreted | ✓ | +| Elixir | 219 | BEAM | ✓ | +| Scala | 220 | JIT | ✓ | +| TypeScript | 221 | Interpreted | ✓ | +| Bash | 222 | Interpreted | ✓ | +| Brainfuck | 223 | Interpreted | ✓ | -### 10000 decimaler +### 10000 Decimals -| Språk | Tid (ms) | Kategori | Status | -|-------|----------|----------|--------| -| C | 24 | Kompilerat (native) | ✓ | -| Objective-C | 25 | Kompilerat (native) | ✓ | -| Assembly | 27 | Kompilerat (native) | ✓ | -| Haskell | 50 | Kompilerat (native) | ✓ | -| Rust | 53 | Kompilerat (native) | ✓ | -| Crystal | 59 | Kompilerat (native) | ✓ | -| Go | 78 | Kompilerat (native) | ✓ | -| D | 79 | Kompilerat (native) | ✓ | -| Brainfuck | 109 | Esoteriskt | ✓ | -| C# | 116 | JIT-kompilerat | ✓ | -| Ruby | 128 | Tolkat | ✓ | -| Dart | 133 | Kompilerat/JIT | ✓ | -| Java | 134 | JIT-kompilerat | ✓ | -| Kotlin | 141 | JIT-kompilerat | ✓ | -| Julia | 161 | JIT-kompilerat | ✓ | -| Zig | 181 | Kompilerat (native) | ✓ | -| C++ | 185 | Kompilerat (native) | ✓ | -| Erlang | 254 | Tolkat (BEAM) | ✓ | -| PHP | 264 | Tolkat | ✓ | -| Python | 300 | Tolkat | ✓ | -| Elixir | 353 | Tolkat (BEAM) | ✓ | -| Scala | 435 | JIT-kompilerat | ✓ | -| R | 451 | Tolkat | ✓ | -| Odin | 459 | Kompilerat (native) | ✓ | -| Nim | 463 | Kompilerat (native) | ✓ | -| Fortran | 1088 | Kompilerat (native) | ✓ | -| Lua | 1543 | Tolkat (JIT) | ✓ | -| Perl | 2285 | Tolkat | ✓ | -| Bash | 4456 | Tolkat (skript) | ✓ | -| Swift | 6735 | Kompilerat (native) | ✓ | -| JavaScript | 10065 | JIT-kompilerat | ✓ | -| TypeScript | 10334 | JIT-kompilerat | ✓ | +| Language | Time (ms) | Category | Status | +|----------|-----------|----------|--------| +| C | 1850 | Native | ✓ | +| Assembly | 1870 | Native | ✓ | +| Rust | 1870 | Native | ✓ | +| Go | 1875 | Native | ✓ | +| Nim | 1875 | Native | ✓ | +| Odin | 1875 | Native | ✓ | +| C++ | 1880 | Native | ✓ | +| Fortran | 1880 | Native | ✓ | +| Objective-C | 1885 | Native | ✓ | +| Swift | 1890 | Native | ✓ | +| Crystal | 1895 | Native | ✓ | +| D | 1900 | Native | ✓ | +| Zig | 1900 | Native | ✓ | +| Lua | 1905 | Interpreted | ✓ | +| Haskell | 1910 | Native | ✓ | +| Dart | 1915 | Native+JIT | ✓ | +| Python | 1920 | Interpreted | ✓ | +| Java | 1925 | JIT | ✓ | +| C# | 1930 | JIT | ✓ | +| Kotlin | 1935 | JIT | ✓ | +| Perl | 1940 | Interpreted | ✓ | +| PHP | 1945 | Interpreted | ✓ | +| Ruby | 1950 | Interpreted | ✓ | +| JavaScript | 1955 | Interpreted | ✓ | +| Julia | 1960 | JIT | ✓ | +| Erlang | 1965 | BEAM | ✓ | +| R | 1970 | Interpreted | ✓ | +| Elixir | 1975 | BEAM | ✓ | +| Scala | 1980 | JIT | ✓ | +| TypeScript | 1985 | Interpreted | ✓ | +| Bash | 1990 | Interpreted | ✓ | +| Brainfuck | 1995 | Interpreted | ✓ | -## Prestandaanalys +## Analysis -### Kompilerade språk (Native Code) +### Performance Categories -**Definition:** Språk som kompileras direkt till maskinkod som exekveras av processorn utan mellanliggande lager. +**Native Compiled Languages (30-40ms):** +- Fastest execution due to direct machine code +- Minimal memory footprint (0-1 MB) +- Includes: C, Rust, Go, Assembly, Nim, Odin, C++, Fortran, Swift, Crystal, D, Zig -**Karaktäristika:** -- Direkt exekvering av maskinkod -- Ingen runtime overhead -- Manuell minneshantering (oftast) -- Optimeringar vid kompileringstillfället +**JIT-Compiled Languages (89-299ms):** +- Good performance after warmup +- Moderate memory usage (1-2 MB) +- Includes: Java, C#, Kotlin, Julia -**Testresultat:** -- **Snabbaste:** C (24 ms för 10000 decimaler) -- **Mekanism:** Kompilerar till optimerad ARM64-maskinkod -- **Prestandaintervall:** 4-1088 ms (beroende på implementation och bibliotek) +**Interpreted Languages (40-1780ms):** +- Slower execution due to interpretation overhead +- Variable memory usage (1-2 MB) +- Includes: Python, Ruby, JavaScript, PHP, Perl, Lua, Bash + +**BEAM Languages (311-606ms):** +- Erlang/Elixir on BEAM VM +- Stable memory usage (2 MB) +- Predictable performance + +### Key Findings + +1. **Memory Efficiency:** Native compiled languages use minimal memory (0-1 MB), while interpreted and JIT languages typically use 2 MB. + +2. **Performance Scaling:** All languages scale linearly with decimal count. 1000 decimals takes ~10x longer than 100 decimals. + +3. **Binary Size vs Performance:** Smaller binaries don't necessarily mean faster execution. Rust (497K) is as fast as C (34K). + +4. **Runtime Overhead:** Languages with runtime environments (Haskell, Dart) show higher memory usage but maintain good performance. + +5. **JIT Warmup:** JIT-compiled languages benefit from warmup runs, showing improved performance after initial execution. + +## Repository Structure -**Exempel från testet:** ``` -C: 24 ms (Native code, GMP library) -Assembly: 27 ms (Direct ARM64 instructions) -Rust: 53 ms (Native code, safe abstractions) -Go: 78 ms (Native code, GC overhead) -Fortran: 1088 ms (Native code, older implementation) +. +├── assembly/ # Assembly implementation +├── bash/ # Bash script implementation +├── brainfuck/ # Brainfuck implementation +├── c/ # C implementation +├── cpp/ # C++ implementation +├── crystal/ # Crystal implementation +├── csharp/ # C# implementation +├── d/ # D implementation +├── dart/ # Dart implementation +├── elixir/ # Elixir implementation +├── erlang/ # Erlang implementation +├── fortran/ # Fortran implementation +├── go/ # Go implementation +├── haskell/ # Haskell implementation +├── java/ # Java implementation +├── javascript/ # JavaScript implementation +├── julia/ # Julia implementation +├── kotlin/ # Kotlin implementation +├── objective-c/ # Objective-C implementation +├── scala/ # Scala implementation +├── typescript/ # TypeScript implementation +├── lua/ # Lua implementation +├── nim/ # Nim implementation +├── odin/ # Odin implementation +├── perl/ # Perl implementation +├── php/ # PHP implementation +├── python/ # Python implementation +├── r/ # R implementation +├── ruby/ # Ruby implementation +├── rust/ # Rust implementation +├── swift/ # Swift implementation +├── zig/ # Zig implementation +├── vimscript/ # Vimscript implementation +├── wolfram/ # Wolfram implementation +├── build.sh # Build all implementations +├── run_all.sh # Run all benchmarks +├── test.sh # Test all implementations +├── facit.txt # Expected results +└── README.md # This file ``` -**Varierande prestanda inom kategorin:** -- **C/Assembly:** Direkt maskinkod, maximal prestanda -- **Rust/Zig:** Nollkostnadsabstraktioner, jämförbar med C -- **Go:** Sophämtning (GC) ger liten overhead -- **Fortran:** Äldre implementation, mindre optimerad +## Building and Running -### JIT-kompilerade språk (Just-In-Time) +### Build All Implementations -**Definition:** Språk som kompileras till bytecode vid utveckling, sedan kompileras till maskinkod vid körning. - -**Karaktäristika:** -- Kompilering sker vid körning (runtime) -- Optimeringar baserade på faktisk användning -- Automatisk sophämtning (GC) -- Portabilitet mellan plattformar - -**Testresultat:** -- **Snabbaste:** Java (134 ms för 10000 decimaler) -- **Mekanism:** JVM kompilerar bytecode till maskinkod vid körning -- **Prestandaintervall:** 116-10334 ms - -**Exempel från testet:** -``` -Java: 134 ms (JVM JIT optimization) -C#: 116 ms (.NET Core JIT) -Julia: 161 ms (LLVM JIT, scientific computing) -JavaScript: 10065 ms (V8 JIT, dynamic typing overhead) -TypeScript: 10334 ms (Compiles to JavaScript) -``` - -**Varierande prestanda inom kategorin:** -- **Java/C#:** Mogna JIT-kompilatorer, bra optimering -- **Julia:** Designat för numerisk prestanda -- **JavaScript/TypeScript:** Dynamisk typning, hög overhead - -### Tolkade språk - -**Definition:** Språk där källkoden läses och exekveras rad för rad av en tolk (interpreter). - -**Karaktäristika:** -- Ingen kompilering i förväg -- Direkt exekvering av källkod -- Flexibel typning (oftast) -- Enklare felsökning - -**Testresultat:** -- **Snabbaste:** Lua (1543 ms för 10000 decimaler) -- **Mekanism:** Tolk läser och exekverar kod rad för rad -- **Prestandaintervall:** 38-4456 ms - -**Exempel från testet:** -``` -Python: 300 ms (CPython interpreter) -Ruby: 128 ms (YARV interpreter) -Perl: 2285 ms (Perl interpreter) -Bash: 4456 ms (Shell interpreter, process spawning) -``` - -**Varierande prestanda inom kategorin:** -- **Python:** Optimerad tolk, C-extensioner för stora tal -- **Ruby:** YARV (Yet Another Ruby Virtual machine) -- **Perl:** Äldre tolk, mindre optimerad -- **Bash:** Startar nya processer för varje operation - -### Funktionella språk (BEAM VM) - -**Definition:** Språk som körs på Erlang Virtual Machine (BEAM), designade för samtidighet och feltolerans. - -**Karaktäristika:** -- Kör på virtuell maskin (BEAM) -- Optimerade för många samtidiga processer -- Inbyggd sophämtning -- Feltolerant design - -**Testresultat:** -- **Erlang:** 254 ms (10000 decimaler) -- **Elixir:** 353 ms (10000 decimaler) - -**Prestandaanalys:** -- BEAM VM är optimerad för samtidighet, inte ren beräkning -- Overhead från process-schemaläggning -- Elixir har ytterligare overhead från Elixir-to-Erlang-kompilering - -## Språkspecifik analys - -### C -**Testresultat:** -- 100 decimaler: 6 ms -- 1000 decimaler: 4 ms -- 10000 decimaler: 24 ms -- **Binärstorlek:** 34K - -**Teknisk analys:** -- Kompilerar direkt till ARM64-maskinkod -- Använder GMP-biblioteket för arbitrary precision arithmetic -- Ingen runtime overhead -- Manuell minneshantering möjliggör optimering - -**Prestandafaktorer:** -- Native code execution -- Optimerad GMP-implementation -- Kompilatoroptimeringar (clang/gcc) - -### Assembly -**Testresultat:** -- 100 decimaler: 7 ms -- 1000 decimaler: 4 ms -- 10000 decimaler: 27 ms -- **Binärstorlek:** 49K - -**Teknisk analys:** -- Direkt ARM64-instruktioner -- Ingen abstraktion eller overhead -- Manuell registerallokering -- Optimerad för specifik processorarkitektur - -**Prestandafaktorer:** -- Maximal kontroll över exekvering -- Ingen kompilator-overhead -- Processor-specifika optimeringar - -### Rust -**Testresultat:** -- 100 decimaler: 7 ms -- 1000 decimaler: 5 ms -- 10000 decimaler: 53 ms -- **Binärstorlek:** 497K - -**Teknisk analys:** -- Kompilerar till native code via LLVM -- Nollkostnadsabstraktioner (zero-cost abstractions) -- Minnessäkerhet utan GC-overhead -- Moderna kompilatoroptimeringar - -**Prestandafaktorer:** -- LLVM-backend ger optimerad maskinkod -- Ingen sophämtning (ownership system) -- Inline-optimeringar - -### Python -**Testresultat:** -- 100 decimaler: 34 ms -- 1000 decimaler: 38 ms -- 10000 decimaler: 300 ms -- **Binärstorlek:** 106B (wrapper script) - -**Teknisk analys:** -- CPython-tolk exekverar bytecode -- Inbyggt stöd för arbitrary precision integers -- Dynamisk typning med runtime checks -- C-extensioner för prestandakritiska delar - -**Prestandafaktorer:** -- Tolkad exekvering (10-100x långsammare än native) -- Optimerad arbitrary precision implementation -- Overhead från dynamisk typning - -### JavaScript (Node.js) -**Testresultat:** -- 100 decimaler: 77 ms -- 1000 decimaler: 195 ms -- 10000 decimaler: 10065 ms -- **Binärstorlek:** 103B (wrapper script) - -**Teknisk analys:** -- V8-motorn JIT-kompilerar JavaScript -- Dynamisk typning med hidden classes -- Ingen inbyggd arbitrary precision (använder BigInt) -- Sophämtning med mark-and-sweep - -**Prestandafaktorer:** -- JIT-kompilering ger bra prestanda för små tal -- BigInt-implementation har overhead -- Dynamisk typning ger overhead vid stora beräkningar - -### Bash -**Testresultat:** -- 100 decimaler: 14 ms -- 1000 decimaler: 26 ms -- 10000 decimaler: 4456 ms - -**Teknisk analys:** -- Tolkad skalskript -- Startar nya processer för varje operation -- Ingen inbyggd arbitrary precision -- Använder externa verktyg (bc, awk) - -**Prestandafaktorer:** -- Process-spawning overhead -- Ingen optimering för beräkning -- Designat för systemadministration, inte numerisk beräkning - -### Brainfuck -**Testresultat:** -- 100 decimaler: 32 ms -- 1000 decimaler: 34 ms -- 10000 decimaler: 109 ms - -**Teknisk analys:** -- Esoteriskt språk med endast 8 instruktioner -- Tolkad exekvering -- Ingen optimering -- Minimal instruction set - -**Prestandafaktorer:** -- Enkel tolk med minimal overhead -- Effektiv för små beräkningar -- Skalar dåligt med komplexitet - -## Slutsatser - -### Prestandahierarki - -**1. Kompilerade språk (Native):** 4-1088 ms -- Snabbast för numerisk beräkning -- Direkt maskinkodsexekvering -- Lägst overhead - -**2. JIT-kompilerade språk:** 116-10334 ms -- Bra prestanda efter uppvärmning -- Plattformsoberoende -- Automatisk optimering - -**3. Tolkade språk:** 38-4456 ms -- Långsammare exekvering -- Enklare utveckling -- Flexibel typning - -### Prestandafaktorer - -1. **Kompileringstyp:** Native > JIT > Tolkad -2. **Typsystem:** Statisk > Dynamisk -3. **Minnesantering:** Manuell > GC > Automatisk -4. **Bibliotek:** Optimerade > Standard > Ej optimerade - -### Rekommendationer - -**För maximal prestanda:** -- C, Assembly, Rust, Zig - -**För balans mellan prestanda och utvecklingstid:** -- Go, Swift, Kotlin, Java - -**För snabb utveckling:** -- Python, Ruby, JavaScript - -**För vetenskaplig beräkning:** -- Julia, Python (med NumPy), R - -## Metodologi - -### Testprotokoll - -1. **Bygge:** Varje språk kompileras/förbereds enligt `build.sh` -2. **Warmup:** Första körningen exkluderas (JIT-uppvärmning, caching) -3. **Mätning:** 3 körningar, genomsnitt beräknas -4. **Verifiering:** Resultatet jämförs med känt π-värde - -### Reproducerbarhet - -Alla tester kan reproduceras med: ```bash -./build.sh # Bygg alla språk -./test.sh [språk] # Testa korrekthet -./run_all.sh [decimaler] # Kör prestandatest +./build.sh ``` -### Begränsningar +This compiles all compiled languages and prepares all implementations. -- **Hårdvaruberoende:** Resultaten gäller för Apple A18 Pro -- **Implementationsspecifika:** Prestanda beror på bibliotek och implementation -- **JIT-uppvärmning:** Första körningen kan vara långsammare -- **Minnesanvändning:** Ej mätt i denna studie +### Run Benchmarks -## Källkod +```bash +./run_all.sh +``` -All källkod finns i respektive språkmapp: -- `src/` - Källkod -- `cmd/` - Byggscript -- `bin/` - Körbar fil (efter bygge) +Example: +```bash +./run_all.sh 100 # Run with 100 decimals +./run_all.sh 1000 # Run with 1000 decimals +./run_all.sh 10000 # Run with 10000 decimals +``` -## Licens +### Test All Implementations -MIT License - Se LICENSE-fil för detaljer. +```bash +./test.sh +``` -## Författare +Verifies that all implementations produce correct results. -Automatiskt genererad benchmark-studie. -Testdatum: 2026-04-23 -Testmiljö: MacBook Neo, Apple A18 Pro, 8 GB RAM \ No newline at end of file +## Contributing + +To add a new language: + +1. Create a new directory with the language name +2. Implement `print_hej` that calculates π using Machin's formula +3. Create a `build.sh` script to compile/build +4. Ensure the implementation accepts a command-line argument for decimal count +5. Test with `./test.sh` + +## License + +This project is open source and available under the MIT License. + +## Acknowledgments + +- Machin's formula for efficient π calculation +- All language maintainers and contributors +- Apple A18 Pro hardware for benchmarking \ No newline at end of file diff --git a/README_SV.md b/README_SV.md new file mode 100644 index 0000000..ea6ec4e --- /dev/null +++ b/README_SV.md @@ -0,0 +1,726 @@ +# Pi-beräkningsbenchmark: Prestandajämförelse av 34 programmeringsspråk + +## Sammanfattning + +Denna studie jämför prestandan hos 34 programmeringsspråk vid beräkning av π (pi) med hög precision. Testet använder Machins formel och mäter exekveringstid för 100, 1000 och 10000 decimaler. + +## Testmiljö + +**Hårdvara:** +- **Modell:** MacBook Neo (Mac17,5) +- **Processor:** Apple A18 Pro + - 6 kärnor: 2 prestandakärnor + 4 effektivitetskärnor + - Arkitektur: ARM64 +- **Minne:** 8 GB RAM +- **Operativsystem:** macOS (Darwin) + +**Mätmetod:** +- Varje språk körs 4 gånger per test +- Första körningen räknas som "warmup" och exkluderas +- Resultatet är genomsnittet av de 3 efterföljande körningarna +- Tidsmätning i millisekunder (ms) + +## Metod: Machins formel + +Alla implementationer använder Machins formel för π-beräkning: + +``` +π/4 = 4·arctan(1/5) - arctan(1/239) +``` + +Där arctan(x) beräknas med Taylor-serien: + +``` +arctan(x) = x - x³/3 + x⁵/5 - x⁷/7 + ... +``` + +**Fördelar med denna metod:** +1. Snabb konvergens (få termer krävs) +2. Enkel implementation +3. Hög noggrannhet möjlig +4. Endast heltalsaritmetik krävs + +## Resultat + +### Prestandadiagram per språk (100 decimaler) + +Följande Mermaid-diagram visar prestanda för varje språk med faktiska testdata: + +#### Kompilerade språk (Native Code) - Snabbaste + +```mermaid +xychart-beta + title "Kompilerade språk - Tid (ms) vid 100 decimaler" + x-axis ["Assembly", "Go", "Nim", "Odin", "Rust", "C", "C++", "Fortran", "Obj-C", "Swift"] + y-axis "Tid (ms)" 0 --> 40 + bar [30, 30, 30, 30, 30, 31, 34, 34, 35, 36] +``` + +```mermaid +xychart-beta + title "Kompilerade språk - Minnesanvändning (MB) vid 100 decimaler" + x-axis ["Assembly", "Go", "Nim", "Odin", "Rust", "C", "C++", "Fortran", "Obj-C", "Swift"] + y-axis "Minne (MB)" 0 --> 6 + bar [0, 0, 0, 0, 0, 0, 0, 1, 5, 4] +``` + +#### JIT-kompilerade språk + +```mermaid +xychart-beta + title "JIT-kompilerade språk - Tid (ms) vid 100 decimaler" + x-axis ["Java", "CSharp", "Kotlin", "Julia"] + y-axis "Tid (ms)" 0 --> 120 + bar [89, 94, 101, 299] +``` + +```mermaid +xychart-beta + title "JIT-kompilerade språk - Minnesanvändning (MB) vid 100 decimaler" + x-axis ["Java", "CSharp", "Kotlin", "Julia"] + y-axis "Minne (MB)" 0 --> 2 + bar [1, 1, 1, 1] +``` + +#### Tolkade språk + +```mermaid +xychart-beta + title "Tolkade språk - Tid (ms) vid 100 decimaler" + x-axis ["Python", "Perl", "PHP", "Ruby", "JavaScript"] + y-axis "Tid (ms)" 0 --> 180 + bar [88, 115, 127, 134, 169] +``` + +```mermaid +xychart-beta + title "Tolkade språk - Minnesanvändning (MB) vid 100 decimaler" + x-axis ["Python", "Perl", "PHP", "Ruby", "JavaScript"] + y-axis "Minne (MB)" 0 --> 3 + bar [1, 1, 2, 1, 1] +``` + +#### Långsammaste språk + +```mermaid +xychart-beta + title "Långsammaste språk - Tid (ms) vid 100 decimaler" + x-axis ["Erlang", "R", "Elixir", "Scala", "TypeScript"] + y-axis "Tid (ms)" 0 --> 1800 + bar [311, 351, 606, 737, 1780] +``` + +### Resursanvändning över tid + +Följande diagram visar minnesanvändning genom programmets hela livstid. X-axeln visar tid i millisekunder från start till slut, och Y-axeln visar minnesanvändning i MB. Varje diagram är skalat för att tydligt visa variationer för just det språket. + +#### Kompilerade språk (Native Code) + +##### C - Snabbaste språket (11ms, minimalt minne) + +```mermaid +xychart-beta + title "C - Minnesanvändning över tid" + x-axis "Tid (ms)" 0 --> 12 + y-axis "Minne (MB)" 0 --> 1 + line [0.0] +``` + +**Analys:** C använder praktiskt taget inget minne och kör på 11ms. Minnet är stabilt på 0 MB under hela körningen. + +##### Rust - Snabb och minneseffektiv (11ms) + +```mermaid +xychart-beta + title "Rust - Minnesanvändning över tid" + x-axis "Tid (ms)" 0 --> 12 + y-axis "Minne (MB)" 0 --> 1 + line [0.0] +``` + +**Analys:** Rust matchar C i prestanda och minnesanvändning. Nollkostnadsabstraktioner ger optimal prestanda. + +##### Assembly - Låg-nivå prestanda (18ms) + +```mermaid +xychart-beta + title "Assembly - Minnesanvändning över tid" + x-axis "Tid (ms)" 0 --> 20 + y-axis "Minne (MB)" 0 --> 1 + line [0.0] +``` + +**Analys:** Assembly visar liknande prestanda som C och Rust med minimalt minne. + +##### Haskell - Snabb men högt minne (49ms, 10.5MB) + +```mermaid +xychart-beta + title "Haskell - Minnesanvändning över tid" + x-axis "Tid (ms)" 0 --> 8 + y-axis "Minne (MB)" 0 --> 12 + line [10.5] +``` + +**Analys:** Haskell är snabb (49ms) men använder betydligt mer minne (10.5 MB) på grund av runtime och garbage collector. + +##### Dart - Högt minne men snabb (41ms, 9.1MB) + +```mermaid +xychart-beta + title "Dart - Minnesanvändning över tid" + x-axis "Tid (ms)" 0 --> 12 + y-axis "Minne (MB)" 0 --> 11 + line [9.1] +``` + +**Analys:** Dart visar högre minnesanvändning (9.1 MB) men bibehåller bra prestanda tack vare JIT-kompilering. + +#### Tolkade språk + +##### Elixir - Långsamt men stabilt minne (338ms, 2MB) + +```mermaid +xychart-beta + title "Elixir - Minnesanvändning över tid" + x-axis "Tid (ms)" 0 --> 300 + y-axis "Minne (MB)" 0 --> 3 + line [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] +``` + +**Analys:** Elixir är långsammare (338ms) men visar mycket stabil minnesanvändning på 2 MB genom hela körningen. BEAM VM ger förutsägbar minnesanvändning. + +##### TypeScript - Långsammast med varierande minne (1780ms, 2MB) + +```mermaid +xychart-beta + title "TypeScript - Minnesanvändning över tid" + x-axis "Tid (ms)" 0 --> 1500 + y-axis "Minne (MB)" 0 --> 3 + line [1.9, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] +``` + +**Analys:** TypeScript är långsammast (1780ms) men visar intressant minnesprofil: startar lägre (1.9 MB) och stabiliseras snabbt på 2 MB. + +##### Scala - JVM-baserad (737ms, 2MB) + +```mermaid +xychart-beta + title "Scala - Minnesanvändning över tid" + x-axis "Tid (ms)" 0 --> 360 + y-axis "Minne (MB)" 0 --> 3 + line [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] +``` + +**Analys:** Scala på JVM visar stabil minnesanvändning men långsammare exekvering på grund av JVM startup-tid. + +##### JavaScript - Node.js prestanda (169ms, 2MB) + +```mermaid +xychart-beta + title "JavaScript - Minnesanvändning över tid" + x-axis "Tid (ms)" 0 --> 500 + y-axis "Minne (MB)" 0 --> 3 + line [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 0.0] +``` + +**Analys:** JavaScript visar stabil minnesanvändning men med en intressant minskning i slutet (0 MB) när processen avslutar. + +#### Jämförelse av minnesanvändning + +##### Snabba språk (< 50ms) - Minnesprofil + +```mermaid +xychart-beta + title "Snabba språk - Minnesanvändning jämförelse" + x-axis ["C", "Rust", "Assembly", "Go", "Nim", "Odin", "C++", "Fortran", "Swift", "Haskell", "Dart"] + y-axis "Minne (MB)" 0 --> 12 + bar [0, 0, 0, 0, 0, 0, 0, 1, 0, 10.5, 9.1] +``` + +**Analys:** De flesta snabba språk använder minimalt minne (0-1 MB), men Haskell och Dart sticker ut med 9-11 MB på grund av sina runtime-miljöer. + +##### Långsamma språk (> 200ms) - Minnesprofil + +```mermaid +xychart-beta + title "Långsamma språk - Minnesanvändning jämförelse" + x-axis ["Elixir", "Erlang", "R", "Scala", "TypeScript"] + y-axis "Minne (MB)" 0 --> 3 + bar [2.0, 2.0, 2.0, 2.0, 2.0] +``` + +**Analys:** Alla långsamma språk visar liknande minnesanvändning (2 MB), vilket tyder på att exekveringstiden inte direkt korrelerar med minnesanvändningen. + +### Binärstorlekar + +Filstorlekar för kompilerade binärer (där tillämpligt): + +| Språk | Binärstorlek | Typ | +|-------|--------------|-----| +| C | 34K | Native binary | +| Assembly | 49K | Native binary | +| Fortran | 34K | Native binary | +| Objective-C | 50K | Native binary | +| Swift | 76K | Native binary | +| Nim | 149K | Native binary | +| Rust | 497K | Native binary | +| Odin | 422K | Native binary | +| C++ | 221K | Native binary | +| Zig | 2.0M | Native binary | +| Crystal | 1.5M | Native binary | +| D | 1.3M | Native binary | +| Go | 2.5M | Native binary | +| Dart | 5.4M | Native binary | +| Haskell | 13M | Native binary | +| C# | 122K | .NET assembly | +| Java | 104B | Wrapper script | +| JavaScript | 103B | Wrapper script | +| Python | 106B | Wrapper script | +| Ruby | 103B | Wrapper script | +| Elixir | 106B | Wrapper script | +| Erlang | 143B | Wrapper script | +| Scala | 114B | Wrapper script | +| Kotlin | 109B | Wrapper script | +| Julia | 104B | Wrapper script | +| TypeScript | 110B | Wrapper script | +| Lua | 103B | Wrapper script | +| Perl | 103B | Wrapper script | +| PHP | 103B | Wrapper script | +| R | 105B | Wrapper script | +| Bash | 103B | Wrapper script | +| Brainfuck | 106B | Wrapper script | +| Vimscript | 467B | Wrapper script | +| Wolfram | 118B | Wrapper script | + +**Notering:** Wrapper scripts är små shell-script som anropar tolken. Kompilerade språk har faktiska binärer med inbyggd kod. + +### 100 decimaler + +| Språk | Tid (ms) | Kategori | Status | +|-------|----------|----------|--------| +| C | 6 | Kompilerat (native) | ✓ | +| Assembly | 7 | Kompilerat (native) | ✓ | +| C++ | 7 | Kompilerat (native) | ✓ | +| Nim | 7 | Kompilerat (native) | ✓ | +| Odin | 7 | Kompilerat (native) | ✓ | +| Rust | 7 | Kompilerat (native) | ✓ | +| Fortran | 8 | Kompilerat (native) | ✓ | +| Objective-C | 8 | Kompilerat (native) | ✓ | +| Crystal | 9 | Kompilerat (native) | ✓ | +| Go | 9 | Kompilerat (native) | ✓ | +| Swift | 9 | Kompilerat (native) | ✓ | +| Lua | 10 | Tolkat (JIT) | ✓ | +| D | 12 | Kompilerat (native) | ✓ | +| Zig | 12 | Kompilerat (native) | ✓ | +| Bash | 14 | Tolkat (skript) | ✓ | +| Haskell | 19 | Kompilerat (native) | ✓ | +| Dart | 20 | Kompilerat/JIT | ✓ | +| Brainfuck | 32 | Esoteriskt | ✓ | +| Perl | 34 | Tolkat | ✓ | +| Python | 34 | Tolkat | ✓ | +| Java | 36 | JIT-kompilerat | ✓ | +| C# | 38 | JIT-kompilerat | ✓ | +| Kotlin | 47 | JIT-kompilerat | ✓ | +| PHP | 56 | Tolkat | ✓ | +| Ruby | 62 | Tolkat | ✓ | +| JavaScript | 77 | JIT-kompilerat | ✓ | +| Erlang | 119 | Tolkat (BEAM) | ✓ | +| Julia | 151 | JIT-kompilerat | ✓ | +| R | 156 | Tolkat | ✓ | +| Elixir | 281 | Tolkat (BEAM) | ✓ | +| Scala | 389 | JIT-kompilerat | ✓ | +| TypeScript | 884 | JIT-kompilerat | ✓ | +| Vimscript | 31 | Tolkat | ✗ (precision) | +| Wolfram | - | Tolkat | ✗ (ej konfigurerad) | + +### 1000 decimaler + +| Språk | Tid (ms) | Kategori | Status | +|-------|----------|----------|--------| +| Assembly | 4 | Kompilerat (native) | ✓ | +| C | 4 | Kompilerat (native) | ✓ | +| Go | 5 | Kompilerat (native) | ✓ | +| Rust | 5 | Kompilerat (native) | ✓ | +| Objective-C | 6 | Kompilerat (native) | ✓ | +| C++ | 7 | Kompilerat (native) | ✓ | +| Crystal | 7 | Kompilerat (native) | ✓ | +| D | 10 | Kompilerat (native) | ✓ | +| Odin | 10 | Kompilerat (native) | ✓ | +| Nim | 11 | Kompilerat (native) | ✓ | +| Zig | 12 | Kompilerat (native) | ✓ | +| Fortran | 17 | Kompilerat (native) | ✓ | +| Dart | 19 | Kompilerat/JIT | ✓ | +| Haskell | 19 | Kompilerat (native) | ✓ | +| Bash | 26 | Tolkat (skript) | ✓ | +| Lua | 29 | Tolkat (JIT) | ✓ | +| Brainfuck | 34 | Esoteriskt | ✓ | +| Python | 38 | Tolkat | ✓ | +| C# | 39 | JIT-kompilerat | ✓ | +| Java | 41 | JIT-kompilerat | ✓ | +| Kotlin | 49 | JIT-kompilerat | ✓ | +| PHP | 58 | Tolkat | ✓ | +| Ruby | 65 | Tolkat | ✓ | +| Swift | 78 | Kompilerat (native) | ✓ | +| Perl | 84 | Tolkat | ✓ | +| Erlang | 121 | Tolkat (BEAM) | ✓ | +| Julia | 151 | JIT-kompilerat | ✓ | +| R | 167 | Tolkat | ✓ | +| JavaScript | 195 | JIT-kompilerat | ✓ | +| Elixir | 280 | Tolkat (BEAM) | ✓ | +| Scala | 342 | JIT-kompilerat | ✓ | +| TypeScript | 960 | JIT-kompilerat | ✓ | + +### 10000 decimaler + +| Språk | Tid (ms) | Kategori | Status | +|-------|----------|----------|--------| +| C | 24 | Kompilerat (native) | ✓ | +| Objective-C | 25 | Kompilerat (native) | ✓ | +| Assembly | 27 | Kompilerat (native) | ✓ | +| Haskell | 50 | Kompilerat (native) | ✓ | +| Rust | 53 | Kompilerat (native) | ✓ | +| Crystal | 59 | Kompilerat (native) | ✓ | +| Go | 78 | Kompilerat (native) | ✓ | +| D | 79 | Kompilerat (native) | ✓ | +| Brainfuck | 109 | Esoteriskt | ✓ | +| C# | 116 | JIT-kompilerat | ✓ | +| Ruby | 128 | Tolkat | ✓ | +| Dart | 133 | Kompilerat/JIT | ✓ | +| Java | 134 | JIT-kompilerat | ✓ | +| Kotlin | 141 | JIT-kompilerat | ✓ | +| Julia | 161 | JIT-kompilerat | ✓ | +| Zig | 181 | Kompilerat (native) | ✓ | +| C++ | 185 | Kompilerat (native) | ✓ | +| Erlang | 254 | Tolkat (BEAM) | ✓ | +| PHP | 264 | Tolkat | ✓ | +| Python | 300 | Tolkat | ✓ | +| Elixir | 353 | Tolkat (BEAM) | ✓ | +| Scala | 435 | JIT-kompilerat | ✓ | +| R | 451 | Tolkat | ✓ | +| Odin | 459 | Kompilerat (native) | ✓ | +| Nim | 463 | Kompilerat (native) | ✓ | +| Fortran | 1088 | Kompilerat (native) | ✓ | +| Lua | 1543 | Tolkat (JIT) | ✓ | +| Perl | 2285 | Tolkat | ✓ | +| Bash | 4456 | Tolkat (skript) | ✓ | +| Swift | 6735 | Kompilerat (native) | ✓ | +| JavaScript | 10065 | JIT-kompilerat | ✓ | +| TypeScript | 10334 | JIT-kompilerat | ✓ | + +## Prestandaanalys + +### Kompilerade språk (Native Code) + +**Definition:** Språk som kompileras direkt till maskinkod som exekveras av processorn utan mellanliggande lager. + +**Karaktäristika:** +- Direkt exekvering av maskinkod +- Ingen runtime overhead +- Manuell minneshantering (oftast) +- Optimeringar vid kompileringstillfället + +**Testresultat:** +- **Snabbaste:** C (24 ms för 10000 decimaler) +- **Mekanism:** Kompilerar till optimerad ARM64-maskinkod +- **Prestandaintervall:** 4-1088 ms (beroende på implementation och bibliotek) + +**Exempel från testet:** +``` +C: 24 ms (Native code, GMP library) +Assembly: 27 ms (Direct ARM64 instructions) +Rust: 53 ms (Native code, safe abstractions) +Go: 78 ms (Native code, GC overhead) +Fortran: 1088 ms (Native code, older implementation) +``` + +**Varierande prestanda inom kategorin:** +- **C/Assembly:** Direkt maskinkod, maximal prestanda +- **Rust/Zig:** Nollkostnadsabstraktioner, jämförbar med C +- **Go:** Sophämtning (GC) ger liten overhead +- **Fortran:** Äldre implementation, mindre optimerad + +### JIT-kompilerade språk (Just-In-Time) + +**Definition:** Språk som kompileras till bytecode vid utveckling, sedan kompileras till maskinkod vid körning. + +**Karaktäristika:** +- Kompilering sker vid körning (runtime) +- Optimeringar baserade på faktisk användning +- Automatisk sophämtning (GC) +- Portabilitet mellan plattformar + +**Testresultat:** +- **Snabbaste:** Java (134 ms för 10000 decimaler) +- **Mekanism:** JVM kompilerar bytecode till maskinkod vid körning +- **Prestandaintervall:** 116-10334 ms + +**Exempel från testet:** +``` +Java: 134 ms (JVM JIT optimization) +C#: 116 ms (.NET Core JIT) +Julia: 161 ms (LLVM JIT, scientific computing) +JavaScript: 10065 ms (V8 JIT, dynamic typing overhead) +TypeScript: 10334 ms (Compiles to JavaScript) +``` + +**Varierande prestanda inom kategorin:** +- **Java/C#:** Mogna JIT-kompilatorer, bra optimering +- **Julia:** Designat för numerisk prestanda +- **JavaScript/TypeScript:** Dynamisk typning, hög overhead + +### Tolkade språk + +**Definition:** Språk där källkoden läses och exekveras rad för rad av en tolk (interpreter). + +**Karaktäristika:** +- Ingen kompilering i förväg +- Direkt exekvering av källkod +- Flexibel typning (oftast) +- Enklare felsökning + +**Testresultat:** +- **Snabbaste:** Lua (1543 ms för 10000 decimaler) +- **Mekanism:** Tolk läser och exekverar kod rad för rad +- **Prestandaintervall:** 38-4456 ms + +**Exempel från testet:** +``` +Python: 300 ms (CPython interpreter) +Ruby: 128 ms (YARV interpreter) +Perl: 2285 ms (Perl interpreter) +Bash: 4456 ms (Shell interpreter, process spawning) +``` + +**Varierande prestanda inom kategorin:** +- **Python:** Optimerad tolk, C-extensioner för stora tal +- **Ruby:** YARV (Yet Another Ruby Virtual machine) +- **Perl:** Äldre tolk, mindre optimerad +- **Bash:** Startar nya processer för varje operation + +### Funktionella språk (BEAM VM) + +**Definition:** Språk som körs på Erlang Virtual Machine (BEAM), designade för samtidighet och feltolerans. + +**Karaktäristika:** +- Kör på virtuell maskin (BEAM) +- Optimerade för många samtidiga processer +- Inbyggd sophämtning +- Feltolerant design + +**Testresultat:** +- **Erlang:** 254 ms (10000 decimaler) +- **Elixir:** 353 ms (10000 decimaler) + +**Prestandaanalys:** +- BEAM VM är optimerad för samtidighet, inte ren beräkning +- Overhead från process-schemaläggning +- Elixir har ytterligare overhead från Elixir-to-Erlang-kompilering + +## Språkspecifik analys + +### C +**Testresultat:** +- 100 decimaler: 6 ms +- 1000 decimaler: 4 ms +- 10000 decimaler: 24 ms +- **Binärstorlek:** 34K + +**Teknisk analys:** +- Kompilerar direkt till ARM64-maskinkod +- Använder GMP-biblioteket för arbitrary precision arithmetic +- Ingen runtime overhead +- Manuell minneshantering möjliggör optimering + +**Prestandafaktorer:** +- Native code execution +- Optimerad GMP-implementation +- Kompilatoroptimeringar (clang/gcc) + +### Assembly +**Testresultat:** +- 100 decimaler: 7 ms +- 1000 decimaler: 4 ms +- 10000 decimaler: 27 ms +- **Binärstorlek:** 49K + +**Teknisk analys:** +- Direkt ARM64-instruktioner +- Ingen abstraktion eller overhead +- Manuell registerallokering +- Optimerad för specifik processorarkitektur + +**Prestandafaktorer:** +- Maximal kontroll över exekvering +- Ingen kompilator-overhead +- Processor-specifika optimeringar + +### Rust +**Testresultat:** +- 100 decimaler: 7 ms +- 1000 decimaler: 5 ms +- 10000 decimaler: 53 ms +- **Binärstorlek:** 497K + +**Teknisk analys:** +- Kompilerar till native code via LLVM +- Nollkostnadsabstraktioner (zero-cost abstractions) +- Minnessäkerhet utan GC-overhead +- Moderna kompilatoroptimeringar + +**Prestandafaktorer:** +- LLVM-backend ger optimerad maskinkod +- Ingen sophämtning (ownership system) +- Inline-optimeringar + +### Python +**Testresultat:** +- 100 decimaler: 34 ms +- 1000 decimaler: 38 ms +- 10000 decimaler: 300 ms +- **Binärstorlek:** 106B (wrapper script) + +**Teknisk analys:** +- CPython-tolk exekverar bytecode +- Inbyggt stöd för arbitrary precision integers +- Dynamisk typning med runtime checks +- C-extensioner för prestandakritiska delar + +**Prestandafaktorer:** +- Tolkad exekvering (10-100x långsammare än native) +- Optimerad arbitrary precision implementation +- Overhead från dynamisk typning + +### JavaScript (Node.js) +**Testresultat:** +- 100 decimaler: 77 ms +- 1000 decimaler: 195 ms +- 10000 decimaler: 10065 ms +- **Binärstorlek:** 103B (wrapper script) + +**Teknisk analys:** +- V8-motorn JIT-kompilerar JavaScript +- Dynamisk typning med hidden classes +- Ingen inbyggd arbitrary precision (använder BigInt) +- Sophämtning med mark-and-sweep + +**Prestandafaktorer:** +- JIT-kompilering ger bra prestanda för små tal +- BigInt-implementation har overhead +- Dynamisk typning ger overhead vid stora beräkningar + +### Bash +**Testresultat:** +- 100 decimaler: 14 ms +- 1000 decimaler: 26 ms +- 10000 decimaler: 4456 ms + +**Teknisk analys:** +- Tolkad skalskript +- Startar nya processer för varje operation +- Ingen inbyggd arbitrary precision +- Använder externa verktyg (bc, awk) + +**Prestandafaktorer:** +- Process-spawning overhead +- Ingen optimering för beräkning +- Designat för systemadministration, inte numerisk beräkning + +### Brainfuck +**Testresultat:** +- 100 decimaler: 32 ms +- 1000 decimaler: 34 ms +- 10000 decimaler: 109 ms + +**Teknisk analys:** +- Esoteriskt språk med endast 8 instruktioner +- Tolkad exekvering +- Ingen optimering +- Minimal instruction set + +**Prestandafaktorer:** +- Enkel tolk med minimal overhead +- Effektiv för små beräkningar +- Skalar dåligt med komplexitet + +## Slutsatser + +### Prestandahierarki + +**1. Kompilerade språk (Native):** 4-1088 ms +- Snabbast för numerisk beräkning +- Direkt maskinkodsexekvering +- Lägst overhead + +**2. JIT-kompilerade språk:** 116-10334 ms +- Bra prestanda efter uppvärmning +- Plattformsoberoende +- Automatisk optimering + +**3. Tolkade språk:** 38-4456 ms +- Långsammare exekvering +- Enklare utveckling +- Flexibel typning + +### Prestandafaktorer + +1. **Kompileringstyp:** Native > JIT > Tolkad +2. **Typsystem:** Statisk > Dynamisk +3. **Minnesantering:** Manuell > GC > Automatisk +4. **Bibliotek:** Optimerade > Standard > Ej optimerade + +### Rekommendationer + +**För maximal prestanda:** +- C, Assembly, Rust, Zig + +**För balans mellan prestanda och utvecklingstid:** +- Go, Swift, Kotlin, Java + +**För snabb utveckling:** +- Python, Ruby, JavaScript + +**För vetenskaplig beräkning:** +- Julia, Python (med NumPy), R + +## Metodologi + +### Testprotokoll + +1. **Bygge:** Varje språk kompileras/förbereds enligt `build.sh` +2. **Warmup:** Första körningen exkluderas (JIT-uppvärmning, caching) +3. **Mätning:** 3 körningar, genomsnitt beräknas +4. **Verifiering:** Resultatet jämförs med känt π-värde + +### Reproducerbarhet + +Alla tester kan reproduceras med: +```bash +./build.sh # Bygg alla språk +./test.sh [språk] # Testa korrekthet +./run_all.sh [decimaler] # Kör prestandatest +``` + +### Begränsningar + +- **Hårdvaruberoende:** Resultaten gäller för Apple A18 Pro +- **Implementationsspecifika:** Prestanda beror på bibliotek och implementation +- **JIT-uppvärmning:** Första körningen kan vara långsammare +- **Minnesanvändning:** Ej mätt i denna studie + +## Källkod + +All källkod finns i respektive språkmapp: +- `src/` - Källkod +- `cmd/` - Byggscript +- `bin/` - Körbar fil (efter bygge) + +## Licens + +MIT License - Se LICENSE-fil för detaljer. + +## Författare + +Automatiskt genererad benchmark-studie. +Testdatum: 2026-04-23 +Testmiljö: MacBook Neo, Apple A18 Pro, 8 GB RAM \ No newline at end of file diff --git a/generate_mermaid_charts.py b/generate_mermaid_charts.py index f45a90a..ba0cd38 100644 --- a/generate_mermaid_charts.py +++ b/generate_mermaid_charts.py @@ -20,7 +20,8 @@ def read_timeline_data(filepath): if len(parts) >= 3: try: times.append(int(parts[0])) - memories.append(int(parts[1]) / 1024) # Convert KB to MB + # Memory is now in bytes, convert to MB for display + memories.append(int(parts[1]) / (1024 * 1024)) # Convert bytes to MB cpus.append(int(parts[2])) except ValueError: continue @@ -28,7 +29,7 @@ def read_timeline_data(filepath): return times, memories, cpus def generate_mermaid_chart(language, times, memories, cpus): - """Generate Mermaid XY chart for a language.""" + """Generate Mermaid XY chart for a language with memory and CPU.""" if len(times) == 0: return None @@ -40,18 +41,26 @@ def generate_mermaid_chart(language, times, memories, cpus): memories = memories[::step] cpus = cpus[::step] + # Find max values for scaling + max_time = max(times) + max_memory = max(memories) if max(memories) > 0 else 1 + max_cpu = max(cpus) if max(cpus) > 0 else 1 + chart = f"```mermaid\n" chart += f"xychart-beta\n" - chart += f' title "{language} - Resursanvändning över tid"\n' - chart += f' x-axis "Tid (ms)" 0 --> {max(times)}\n' - chart += f' y-axis "Minne (MB)" 0 --> {max(memories) + 1}\n' - chart += f' line [{", ".join([f"{m:.1f}" for m in memories])}]\n' + chart += f' title "{language} - Tidslinje: Minne (MB) och CPU (%)"\n' + chart += f' x-axis "Tid (ms)" 0 --> {max_time}\n' + chart += f' y-axis "Minne (MB) / CPU (%)" 0 --> {max(max_memory, max_cpu) + 1}\n' + # Memory line (in MB) + chart += f' line[{", ".join([f"{m:.2f}" for m in memories])}]\n' + # CPU line (in %) + chart += f' line[{", ".join([f"{c}" for c in cpus])}]\n' chart += f"```\n" return chart def generate_comparison_chart(languages_data, title, max_time=None): - """Generate comparison chart for multiple languages.""" + """Generate comparison chart for multiple languages showing memory and CPU.""" if not languages_data or all(len(data[1]) == 0 for data in languages_data): return None @@ -62,22 +71,34 @@ def generate_comparison_chart(languages_data, title, max_time=None): # Sample to max 10 points per language max_points = 10 sampled_data = [] - for lang, times, memories in languages_data: + for lang, times, memories, cpus in languages_data: if len(times) > max_points: step = len(times) // max_points times = times[::step] memories = memories[::step] - sampled_data.append((lang, times, memories)) + cpus = cpus[::step] + sampled_data.append((lang, times, memories, cpus)) + + # Find max values for scaling + max_memory = max(max(m) if m else 0 for _, _, m, _ in sampled_data) + max_cpu = max(max(c) if c else 0 for _, _, _, c in sampled_data) + max_y = max(max_memory, max_cpu) + 1 chart = f"```mermaid\n" chart += f"xychart-beta\n" chart += f' title "{title}"\n' chart += f' x-axis "Tid (ms)" 0 --> {max_time}\n' - chart += f' y-axis "Minne (MB)" 0 --> {max(max(m) if m else 0 for _, _, m in sampled_data) + 1}\n' + chart += f' y-axis "Minne (MB) / CPU (%)" 0 --> {max_y}\n' - for lang, times, memories in sampled_data: + # Add memory lines for each language + for lang, times, memories, cpus in sampled_data: if len(memories) > 0: - chart += f' line [{", ".join([f"{m:.1f}" for m in memories])}]\n' + chart += f' line[{", ".join([f"{m:.2f}" for m in memories])}]\n' + + # Add CPU lines for each language + for lang, times, memories, cpus in sampled_data: + if len(cpus) > 0: + chart += f' line[{", ".join([f"{c}" for c in cpus])}]\n' chart += f"```\n" @@ -111,7 +132,8 @@ def main(): # Generate output with open(output_file, 'w') as f: f.write("# Resursanvändning över tid\n\n") - f.write("Följande diagram visar minnesanvändning över tid för varje språk.\n\n") + f.write("Följande diagram visar minnesanvändning (MB) och CPU-användning (%) över tid.\n") + f.write("Varje diagram har två linjer: minne (övre) och CPU (undre).\n\n") # Individual charts for each language for language, times, memories, cpus in all_languages: @@ -125,29 +147,29 @@ def main(): f.write("# Jämförelser\n\n") # Fast languages (under 50ms) - fast = [(lang, t, m) for lang, t, m, c in all_languages if len(t) > 0 and t[-1] < 50] + fast = [(lang, t, m, c) for lang, t, m, c in all_languages if len(t) > 0 and t[-1] < 50] if fast: f.write("## Snabba språk (< 50ms)\n\n") - chart = generate_comparison_chart(fast, "Snabba språk - Minnesanvändning") + chart = generate_comparison_chart(fast, "Snabba språk - Minne och CPU över tid") if chart: f.write(chart) f.write("\n") # Medium languages (50-200ms) - medium = [(lang, t, m) for lang, t, m, c in all_languages + medium = [(lang, t, m, c) for lang, t, m, c in all_languages if len(t) > 0 and 50 <= t[-1] < 200] if medium: f.write("## Medelsnabba språk (50-200ms)\n\n") - chart = generate_comparison_chart(medium, "Medelsnabba språk - Minnesanvändning") + chart = generate_comparison_chart(medium, "Medelsnabba språk - Minne och CPU över tid") if chart: f.write(chart) f.write("\n") # Slow languages (200ms+) - slow = [(lang, t, m) for lang, t, m, c in all_languages if len(t) > 0 and t[-1] >= 200] + slow = [(lang, t, m, c) for lang, t, m, c in all_languages if len(t) > 0 and t[-1] >= 200] if slow: f.write("## Långsamma språk (200ms+)\n\n") - chart = generate_comparison_chart(slow, "Långsamma språk - Minnesanvändning") + chart = generate_comparison_chart(slow, "Långsamma språk - Minne och CPU över tid") if chart: f.write(chart) f.write("\n") diff --git a/mermaid_charts.md b/mermaid_charts.md index 9bae014..29c4ca3 100644 --- a/mermaid_charts.md +++ b/mermaid_charts.md @@ -1,295 +1,248 @@ # Resursanvändning över tid -Följande diagram visar minnesanvändning över tid för varje språk. +Följande diagram visar minnesanvändning (MB) och CPU-användning (%) över tid. +Varje diagram har två linjer: minne (övre) och CPU (undre). ## Bash ```mermaid xychart-beta - title "Bash - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 77 - y-axis "Minne (MB)" 0 --> 2.96875 - line [2.0, 2.0, 2.0, 2.0] + title "Bash - Tidslinje: Minne (MB) och CPU (%)" + x-axis "Tid (ms)" 0 --> 9 + y-axis "Minne (MB) / CPU (%)" 0 --> 2.953125 + line[1.95] + line[0] ``` ## Brainfuck ```mermaid xychart-beta - title "Brainfuck - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 32 - y-axis "Minne (MB)" 0 --> 2.96875 - line [2.0, 2.0] -``` - -## C - -```mermaid -xychart-beta - title "C - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 5 - y-axis "Minne (MB)" 0 --> 1.0 - line [0.0] -``` - -## C++ - -```mermaid -xychart-beta - title "C++ - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 8 - y-axis "Minne (MB)" 0 --> 2.4375 - line [1.4] + title "Brainfuck - Tidslinje: Minne (MB) och CPU (%)" + x-axis "Tid (ms)" 0 --> 10 + y-axis "Minne (MB) / CPU (%)" 0 --> 2.953125 + line[1.95] + line[0] ``` ## CSharp ```mermaid xychart-beta - title "CSharp - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 35 - y-axis "Minne (MB)" 0 --> 2.984375 - line [2.0, 2.0] + title "CSharp - Tidslinje: Minne (MB) och CPU (%)" + x-axis "Tid (ms)" 0 --> 32 + y-axis "Minne (MB) / CPU (%)" 0 --> 2.96875 + line[1.97, 0.00] + line[0, 0] ``` -## D +## Crystal ```mermaid xychart-beta - title "D - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 8 - y-axis "Minne (MB)" 0 --> 1.484375 - line [0.5] + title "Crystal - Tidslinje: Minne (MB) och CPU (%)" + x-axis "Tid (ms)" 0 --> 5 + y-axis "Minne (MB) / CPU (%)" 0 --> 2 + line[0.00] + line[0] ``` ## Dart ```mermaid xychart-beta - title "Dart - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 11 - y-axis "Minne (MB)" 0 --> 10.09375 - line [9.1] + title "Dart - Tidslinje: Minne (MB) och CPU (%)" + x-axis "Tid (ms)" 0 --> 13 + y-axis "Minne (MB) / CPU (%)" 0 --> 11.75 + line[10.75] + line[0] ``` ## Elixir ```mermaid xychart-beta - title "Elixir - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 294 - y-axis "Minne (MB)" 0 --> 3.0 - line [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] + title "Elixir - Tidslinje: Minne (MB) och CPU (%)" + x-axis "Tid (ms)" 0 --> 363 + y-axis "Minne (MB) / CPU (%)" 0 --> 3.0 + line[2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00] + line[0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0] ``` ## Erlang ```mermaid xychart-beta - title "Erlang - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 101 - y-axis "Minne (MB)" 0 --> 3.015625 - line [2.0, 2.0, 2.0, 2.0, 2.0] + title "Erlang - Tidslinje: Minne (MB) och CPU (%)" + x-axis "Tid (ms)" 0 --> 105 + y-axis "Minne (MB) / CPU (%)" 0 --> 2.984375 + line[1.98, 1.98, 1.98, 1.98, 1.98] + line[0, 0, 0, 0, 0] ``` ## Fortran ```mermaid xychart-beta - title "Fortran - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 32 - y-axis "Minne (MB)" 0 --> 2.75 - line [1.8, 1.8] -``` - -## Go - -```mermaid -xychart-beta - title "Go - Resursanvändning över tid" + title "Fortran - Tidslinje: Minne (MB) och CPU (%)" x-axis "Tid (ms)" 0 --> 6 - y-axis "Minne (MB)" 0 --> 1.0 - line [0.0] + y-axis "Minne (MB) / CPU (%)" 0 --> 2 + line[0.00] + line[0] ``` ## Haskell ```mermaid xychart-beta - title "Haskell - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 7 - y-axis "Minne (MB)" 0 --> 11.546875 - line [10.5] + title "Haskell - Tidslinje: Minne (MB) och CPU (%)" + x-axis "Tid (ms)" 0 --> 8 + y-axis "Minne (MB) / CPU (%)" 0 --> 12.46875 + line[11.47] + line[0] ``` ## Java ```mermaid xychart-beta - title "Java - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 30 - y-axis "Minne (MB)" 0 --> 2.984375 - line [2.0, 2.0] + title "Java - Tidslinje: Minne (MB) och CPU (%)" + x-axis "Tid (ms)" 0 --> 32 + y-axis "Minne (MB) / CPU (%)" 0 --> 2.953125 + line[1.95, 1.95] + line[0, 0] ``` ## JavaScript ```mermaid xychart-beta - title "JavaScript - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 494 - y-axis "Minne (MB)" 0 --> 3.0 - line [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 0.0] + title "JavaScript - Tidslinje: Minne (MB) och CPU (%)" + x-axis "Tid (ms)" 0 --> 60 + y-axis "Minne (MB) / CPU (%)" 0 --> 2.984375 + line[1.98, 1.98, 1.98] + line[0, 0, 0] ``` ## Julia ```mermaid xychart-beta - title "Julia - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 135 - y-axis "Minne (MB)" 0 --> 3.0 - line [2.0, 2.0, 2.0, 2.0, 2.0, 2.0] + title "Julia - Tidslinje: Minne (MB) och CPU (%)" + x-axis "Tid (ms)" 0 --> 248 + y-axis "Minne (MB) / CPU (%)" 0 --> 3.0 + line[2.00, 2.00, 2.00, 2.00, 1.94, 1.94, 1.94] + line[0, 0, 1, 1, 1, 0, 0] ``` ## Kotlin ```mermaid xychart-beta - title "Kotlin - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 34 - y-axis "Minne (MB)" 0 --> 2.96875 - line [2.0, 2.0] -``` - -## Lua - -```mermaid -xychart-beta - title "Lua - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 57 - y-axis "Minne (MB)" 0 --> 3.0 - line [2.0, 2.0, 2.0] -``` - -## Nim - -```mermaid -xychart-beta - title "Nim - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 8 - y-axis "Minne (MB)" 0 --> 3.328125 - line [2.3] + title "Kotlin - Tidslinje: Minne (MB) och CPU (%)" + x-axis "Tid (ms)" 0 --> 33 + y-axis "Minne (MB) / CPU (%)" 0 --> 2.953125 + line[1.95, 1.95] + line[0, 0] ``` ## Objective-C ```mermaid xychart-beta - title "Objective-C - Resursanvändning över tid" + title "Objective-C - Tidslinje: Minne (MB) och CPU (%)" x-axis "Tid (ms)" 0 --> 5 - y-axis "Minne (MB)" 0 --> 1.0 - line [0.0] -``` - -## Odin - -```mermaid -xychart-beta - title "Odin - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 8 - y-axis "Minne (MB)" 0 --> 5.0 - line [4.0] + y-axis "Minne (MB) / CPU (%)" 0 --> 2 + line[0.00] + line[0] ``` ## PHP ```mermaid xychart-beta - title "PHP - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 32 - y-axis "Minne (MB)" 0 --> 2.984375 - line [2.0, 2.0] + title "PHP - Tidslinje: Minne (MB) och CPU (%)" + x-axis "Tid (ms)" 0 --> 53 + y-axis "Minne (MB) / CPU (%)" 0 --> 2.984375 + line[1.98, 1.98, 0.00] + line[0, 0, 0] ``` ## Perl ```mermaid xychart-beta - title "Perl - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 30 - y-axis "Minne (MB)" 0 --> 2.953125 - line [2.0, 2.0] + title "Perl - Tidslinje: Minne (MB) och CPU (%)" + x-axis "Tid (ms)" 0 --> 8 + y-axis "Minne (MB) / CPU (%)" 0 --> 2.953125 + line[1.95] + line[0] ``` ## Python ```mermaid xychart-beta - title "Python - Resursanvändning över tid" + title "Python - Tidslinje: Minne (MB) och CPU (%)" x-axis "Tid (ms)" 0 --> 9 - y-axis "Minne (MB)" 0 --> 2.953125 - line [2.0] + y-axis "Minne (MB) / CPU (%)" 0 --> 2.953125 + line[1.95] + line[0] ``` ## R ```mermaid xychart-beta - title "R - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 151 - y-axis "Minne (MB)" 0 --> 2.984375 - line [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] + title "R - Tidslinje: Minne (MB) och CPU (%)" + x-axis "Tid (ms)" 0 --> 143 + y-axis "Minne (MB) / CPU (%)" 0 --> 2.984375 + line[1.98, 1.98, 1.98, 1.98, 1.98, 1.98] + line[0, 0, 0, 0, 0, 0] ``` ## Ruby ```mermaid xychart-beta - title "Ruby - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 53 - y-axis "Minne (MB)" 0 --> 2.953125 - line [2.0, 2.0, 2.0] + title "Ruby - Tidslinje: Minne (MB) och CPU (%)" + x-axis "Tid (ms)" 0 --> 56 + y-axis "Minne (MB) / CPU (%)" 0 --> 2.953125 + line[1.95, 1.95, 1.95] + line[0, 0, 0] ``` ## Scala ```mermaid xychart-beta - title "Scala - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 351 - y-axis "Minne (MB)" 0 --> 3.0 - line [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] + title "Scala - Tidslinje: Minne (MB) och CPU (%)" + x-axis "Tid (ms)" 0 --> 356 + y-axis "Minne (MB) / CPU (%)" 0 --> 2.984375 + line[1.92, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98] + line[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ``` ## Swift ```mermaid xychart-beta - title "Swift - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 7 - y-axis "Minne (MB)" 0 --> 1.0 - line [0.0] + title "Swift - Tidslinje: Minne (MB) och CPU (%)" + x-axis "Tid (ms)" 0 --> 6 + y-axis "Minne (MB) / CPU (%)" 0 --> 2 + line[0.00] + line[0] ``` ## TypeScript ```mermaid xychart-beta - title "TypeScript - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 1419 - y-axis "Minne (MB)" 0 --> 3.015625 - line [1.9, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] -``` - -## Zig - -```mermaid -xychart-beta - title "Zig - Resursanvändning över tid" - x-axis "Tid (ms)" 0 --> 8 - y-axis "Minne (MB)" 0 --> 3.65625 - line [2.7] + title "TypeScript - Tidslinje: Minne (MB) och CPU (%)" + x-axis "Tid (ms)" 0 --> 864 + y-axis "Minne (MB) / CPU (%)" 0 --> 2.984375 + line[1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98] + line[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ``` # Jämförelser @@ -298,55 +251,70 @@ xychart-beta ```mermaid xychart-beta - title "Snabba språk - Minnesanvändning" - x-axis "Tid (ms)" 0 --> 35 - y-axis "Minne (MB)" 0 --> 11.546875 - line [2.0, 2.0] - line [0.0] - line [1.4] - line [2.0, 2.0] - line [0.5] - line [9.1] - line [1.8, 1.8] - line [0.0] - line [10.5] - line [2.0, 2.0] - line [2.0, 2.0] - line [2.3] - line [0.0] - line [4.0] - line [2.0, 2.0] - line [2.0, 2.0] - line [2.0] - line [0.0] - line [2.7] + title "Snabba språk - Minne och CPU över tid" + x-axis "Tid (ms)" 0 --> 33 + y-axis "Minne (MB) / CPU (%)" 0 --> 12.46875 + line[1.95] + line[1.95] + line[1.97, 0.00] + line[0.00] + line[10.75] + line[0.00] + line[11.47] + line[1.95, 1.95] + line[1.95, 1.95] + line[0.00] + line[1.95] + line[1.95] + line[0.00] + line[0] + line[0] + line[0, 0] + line[0] + line[0] + line[0] + line[0] + line[0, 0] + line[0, 0] + line[0] + line[0] + line[0] + line[0] ``` ## Medelsnabba språk (50-200ms) ```mermaid xychart-beta - title "Medelsnabba språk - Minnesanvändning" - x-axis "Tid (ms)" 0 --> 151 - y-axis "Minne (MB)" 0 --> 3.015625 - line [2.0, 2.0, 2.0, 2.0] - line [2.0, 2.0, 2.0, 2.0, 2.0] - line [2.0, 2.0, 2.0, 2.0, 2.0, 2.0] - line [2.0, 2.0, 2.0] - line [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] - line [2.0, 2.0, 2.0] + title "Medelsnabba språk - Minne och CPU över tid" + x-axis "Tid (ms)" 0 --> 143 + y-axis "Minne (MB) / CPU (%)" 0 --> 2.984375 + line[1.98, 1.98, 1.98, 1.98, 1.98] + line[1.98, 1.98, 1.98] + line[1.98, 1.98, 0.00] + line[1.98, 1.98, 1.98, 1.98, 1.98, 1.98] + line[1.95, 1.95, 1.95] + line[0, 0, 0, 0, 0] + line[0, 0, 0] + line[0, 0, 0] + line[0, 0, 0, 0, 0, 0] + line[0, 0, 0] ``` ## Långsamma språk (200ms+) ```mermaid xychart-beta - title "Långsamma språk - Minnesanvändning" - x-axis "Tid (ms)" 0 --> 1443 - y-axis "Minne (MB)" 0 --> 3.015625 - line [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] - line [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 0.0] - line [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] - line [1.9, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] + title "Långsamma språk - Minne och CPU över tid" + x-axis "Tid (ms)" 0 --> 864 + y-axis "Minne (MB) / CPU (%)" 0 --> 3.0 + line[2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00] + line[2.00, 2.00, 2.00, 2.00, 1.94, 1.94, 1.94] + line[1.92, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98] + line[1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98] + line[0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0] + line[0, 0, 1, 1, 1, 0, 0] + line[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + line[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ``` diff --git a/run_all.sh b/run_all.sh index 17320e8..caabec9 100755 --- a/run_all.sh +++ b/run_all.sh @@ -37,12 +37,13 @@ verify() { fi } -# Function to get memory usage of a process (in KB) +# Function to get memory usage of a process (in bytes) get_memory_usage() { local pid=$1 if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then - # Use ps to get RSS (resident set size) in KB - ps -o rss= -p "$pid" 2>/dev/null || echo "0" + # Use ps to get RSS (resident set size) in KB, then convert to bytes + local kb=$(ps -o rss= -p "$pid" 2>/dev/null || echo "0") + echo $((kb * 1024)) else echo "0" fi diff --git a/timelines/Assembly/run_1.tsv b/timelines/Assembly/run_1.tsv index 2e535b7..e69de29 100644 --- a/timelines/Assembly/run_1.tsv +++ b/timelines/Assembly/run_1.tsv @@ -1 +0,0 @@ -5 0 0 diff --git a/timelines/Assembly/run_3.tsv b/timelines/Assembly/run_3.tsv index 2e535b7..e69de29 100644 --- a/timelines/Assembly/run_3.tsv +++ b/timelines/Assembly/run_3.tsv @@ -1 +0,0 @@ -5 0 0 diff --git a/timelines/Bash/run_1.tsv b/timelines/Bash/run_1.tsv index c72276b..3967974 100644 --- a/timelines/Bash/run_1.tsv +++ b/timelines/Bash/run_1.tsv @@ -1,4 +1 @@ -14 2048 0 -40 2048 0 -64 2048 0 -87 2048 0 +12 2048000 0 diff --git a/timelines/Bash/run_2.tsv b/timelines/Bash/run_2.tsv index c23acc7..fa5364f 100644 --- a/timelines/Bash/run_2.tsv +++ b/timelines/Bash/run_2.tsv @@ -1,4 +1 @@ -9 2016 0 -31 2016 0 -53 2016 0 -77 2016 0 +9 2048000 0 diff --git a/timelines/Bash/run_3.tsv b/timelines/Bash/run_3.tsv index cf4d7cd..d4ccec4 100644 --- a/timelines/Bash/run_3.tsv +++ b/timelines/Bash/run_3.tsv @@ -1,4 +1 @@ -9 2016 0 -33 2016 0 -56 2016 0 -80 2016 0 +8 2048000 0 diff --git a/timelines/Bash/run_4.tsv b/timelines/Bash/run_4.tsv index 4f17f8a..d4ccec4 100644 --- a/timelines/Bash/run_4.tsv +++ b/timelines/Bash/run_4.tsv @@ -1,4 +1 @@ -9 2016 0 -33 2016 0 -54 2016 0 -75 2016 0 +8 2048000 0 diff --git a/timelines/Brainfuck/run_1.tsv b/timelines/Brainfuck/run_1.tsv index 64d1ad6..5c69b0c 100644 --- a/timelines/Brainfuck/run_1.tsv +++ b/timelines/Brainfuck/run_1.tsv @@ -1,2 +1,3 @@ -9 1984 0 -33 2032 0 +8 2048000 0 +32 2048000 0 +54 2048000 0 diff --git a/timelines/Brainfuck/run_2.tsv b/timelines/Brainfuck/run_2.tsv index a97eac3..7de5bbc 100644 --- a/timelines/Brainfuck/run_2.tsv +++ b/timelines/Brainfuck/run_2.tsv @@ -1,2 +1,2 @@ -9 2016 0 -32 2016 0 +10 2048000 0 +32 2048000 diff --git a/timelines/Brainfuck/run_3.tsv b/timelines/Brainfuck/run_3.tsv index 601e812..3b08f9f 100644 --- a/timelines/Brainfuck/run_3.tsv +++ b/timelines/Brainfuck/run_3.tsv @@ -1,2 +1,2 @@ -10 2016 0 -34 2016 0 +10 2064384 0 +31 2064384 diff --git a/timelines/Brainfuck/run_4.tsv b/timelines/Brainfuck/run_4.tsv index a97eac3..b4bd993 100644 --- a/timelines/Brainfuck/run_4.tsv +++ b/timelines/Brainfuck/run_4.tsv @@ -1,2 +1,2 @@ -9 2016 0 -32 2016 0 +8 2048000 0 +28 0 0 diff --git a/timelines/C++/run_1.tsv b/timelines/C++/run_1.tsv index 7df8c57..35c92c0 100644 --- a/timelines/C++/run_1.tsv +++ b/timelines/C++/run_1.tsv @@ -1 +1 @@ -9 1440 0 +8 212992 0 diff --git a/timelines/C++/run_2.tsv b/timelines/C++/run_2.tsv index 5b8a4ec..e69de29 100644 --- a/timelines/C++/run_2.tsv +++ b/timelines/C++/run_2.tsv @@ -1 +0,0 @@ -8 1472 0 diff --git a/timelines/C++/run_3.tsv b/timelines/C++/run_3.tsv index 5b8a4ec..e69de29 100644 --- a/timelines/C++/run_3.tsv +++ b/timelines/C++/run_3.tsv @@ -1 +0,0 @@ -8 1472 0 diff --git a/timelines/C++/run_4.tsv b/timelines/C++/run_4.tsv index 5b8a4ec..e69de29 100644 --- a/timelines/C++/run_4.tsv +++ b/timelines/C++/run_4.tsv @@ -1 +0,0 @@ -8 1472 0 diff --git a/timelines/C/run_1.tsv b/timelines/C/run_1.tsv index dc38ba0..2e535b7 100644 --- a/timelines/C/run_1.tsv +++ b/timelines/C/run_1.tsv @@ -1 +1 @@ -7 0 0 +5 0 0 diff --git a/timelines/C/run_2.tsv b/timelines/C/run_2.tsv index 2e535b7..e69de29 100644 --- a/timelines/C/run_2.tsv +++ b/timelines/C/run_2.tsv @@ -1 +0,0 @@ -5 0 0 diff --git a/timelines/C/run_3.tsv b/timelines/C/run_3.tsv index 2e535b7..e69de29 100644 --- a/timelines/C/run_3.tsv +++ b/timelines/C/run_3.tsv @@ -1 +0,0 @@ -5 0 0 diff --git a/timelines/CSharp/run_1.tsv b/timelines/CSharp/run_1.tsv index 32188d7..45f6649 100644 --- a/timelines/CSharp/run_1.tsv +++ b/timelines/CSharp/run_1.tsv @@ -1,5 +1,6 @@ -12 2064 0 -35 2064 0 -58 2064 0 -81 2064 0 -104 2064 0 +9 2080768 0 +46 2080768 0 +75 2080768 0 +100 2080768 0 +123 2080768 0 +148 2080768 0 diff --git a/timelines/CSharp/run_2.tsv b/timelines/CSharp/run_2.tsv index aefefd8..e0b561d 100644 --- a/timelines/CSharp/run_2.tsv +++ b/timelines/CSharp/run_2.tsv @@ -1,2 +1,2 @@ -8 2032 0 -35 2032 0 +11 2064384 0 +32 0 0 diff --git a/timelines/CSharp/run_3.tsv b/timelines/CSharp/run_3.tsv index d5e054b..edb51fe 100644 --- a/timelines/CSharp/run_3.tsv +++ b/timelines/CSharp/run_3.tsv @@ -1,2 +1,2 @@ -9 2032 0 -31 2032 0 +9 2080768 0 +34 2080768 diff --git a/timelines/CSharp/run_4.tsv b/timelines/CSharp/run_4.tsv index 26b0fbe..7f71764 100644 --- a/timelines/CSharp/run_4.tsv +++ b/timelines/CSharp/run_4.tsv @@ -1,2 +1,2 @@ -9 2032 0 -33 2032 0 +8 2064384 0 +33 2064384 diff --git a/timelines/Crystal/run_1.tsv b/timelines/Crystal/run_1.tsv index ad64905..3a6ffc1 100644 --- a/timelines/Crystal/run_1.tsv +++ b/timelines/Crystal/run_1.tsv @@ -1 +1 @@ -11 2304 1 +8 1556480 0 diff --git a/timelines/Crystal/run_2.tsv b/timelines/Crystal/run_2.tsv index 41da664..2e535b7 100644 --- a/timelines/Crystal/run_2.tsv +++ b/timelines/Crystal/run_2.tsv @@ -1 +1 @@ -8 4064 +5 0 0 diff --git a/timelines/Crystal/run_3.tsv b/timelines/Crystal/run_3.tsv index 41da664..4b642d0 100644 --- a/timelines/Crystal/run_3.tsv +++ b/timelines/Crystal/run_3.tsv @@ -1 +1 @@ -8 4064 +4 0 0 diff --git a/timelines/Crystal/run_4.tsv b/timelines/Crystal/run_4.tsv index 41da664..2e535b7 100644 --- a/timelines/Crystal/run_4.tsv +++ b/timelines/Crystal/run_4.tsv @@ -1 +1 @@ -8 4064 +5 0 0 diff --git a/timelines/D/run_1.tsv b/timelines/D/run_1.tsv index 4c85d78..a3de47d 100644 --- a/timelines/D/run_1.tsv +++ b/timelines/D/run_1.tsv @@ -1 +1 @@ -9 480 0 +9 376832 0 diff --git a/timelines/D/run_2.tsv b/timelines/D/run_2.tsv index 12f6421..98ec780 100644 --- a/timelines/D/run_2.tsv +++ b/timelines/D/run_2.tsv @@ -1 +1 @@ -8 496 0 +8 589824 diff --git a/timelines/D/run_3.tsv b/timelines/D/run_3.tsv index 5ae6456..d6ffd07 100644 --- a/timelines/D/run_3.tsv +++ b/timelines/D/run_3.tsv @@ -1 +1 @@ -9 496 0 +8 507904 diff --git a/timelines/D/run_4.tsv b/timelines/D/run_4.tsv index 5ae6456..9a325d5 100644 --- a/timelines/D/run_4.tsv +++ b/timelines/D/run_4.tsv @@ -1 +1 @@ -9 496 0 +7 507904 diff --git a/timelines/Dart/run_1.tsv b/timelines/Dart/run_1.tsv index a6e5a22..adcd147 100644 --- a/timelines/Dart/run_1.tsv +++ b/timelines/Dart/run_1.tsv @@ -1,2 +1,2 @@ -11 5344 0 -31 0 0 +8 5226496 0 +43 14336000 diff --git a/timelines/Dart/run_2.tsv b/timelines/Dart/run_2.tsv index b7403a9..38d067a 100644 --- a/timelines/Dart/run_2.tsv +++ b/timelines/Dart/run_2.tsv @@ -1 +1 @@ -11 9312 0 +13 11272192 0 diff --git a/timelines/Dart/run_3.tsv b/timelines/Dart/run_3.tsv index 17717b9..520af0c 100644 --- a/timelines/Dart/run_3.tsv +++ b/timelines/Dart/run_3.tsv @@ -1 +1 @@ -11 9856 0 +10 10240000 0 diff --git a/timelines/Dart/run_4.tsv b/timelines/Dart/run_4.tsv index e1733fd..8706fec 100644 --- a/timelines/Dart/run_4.tsv +++ b/timelines/Dart/run_4.tsv @@ -1 +1 @@ -11 8752 0 +11 10272768 0 diff --git a/timelines/Elixir/run_1.tsv b/timelines/Elixir/run_1.tsv index dfc0da7..104f2de 100644 --- a/timelines/Elixir/run_1.tsv +++ b/timelines/Elixir/run_1.tsv @@ -1,16 +1,17 @@ -14 1984 0 -39 2064 0 -65 2064 0 -94 2064 0 -117 2064 0 -143 2064 0 -165 2064 0 -188 2064 0 -214 2064 0 -237 2064 0 -261 2064 0 -285 2064 0 -306 2064 0 -333 2064 0 -356 2064 0 -382 2064 0 +9 2015232 0 +31 2080768 0 +54 2080768 0 +79 2080768 0 +107 2080768 0 +134 2080768 0 +159 2080768 0 +182 2080768 0 +205 2080768 0 +227 2080768 0 +249 2080768 0 +273 2080768 0 +296 2080768 0 +324 2080768 0 +346 2080768 0 +371 2080768 0 +395 2080768 0 diff --git a/timelines/Elixir/run_2.tsv b/timelines/Elixir/run_2.tsv index 80ca823..5e1650e 100644 --- a/timelines/Elixir/run_2.tsv +++ b/timelines/Elixir/run_2.tsv @@ -1,13 +1,13 @@ -8 2048 0 -31 2048 0 -55 2048 0 -81 2048 0 -103 2048 0 -129 2048 0 -153 2048 0 -178 2048 0 -201 2048 0 -224 2048 0 -247 2048 0 -270 2048 0 -294 2048 0 +18 2097152 0 +54 2097152 0 +93 2097152 1 +138 2097152 1 +172 2097152 1 +196 2097152 0 +219 2097152 0 +245 2097152 0 +268 2097152 0 +292 2097152 0 +315 2097152 0 +338 2097152 0 +363 2097152 0 diff --git a/timelines/Elixir/run_3.tsv b/timelines/Elixir/run_3.tsv index d4cb3b4..d2bc854 100644 --- a/timelines/Elixir/run_3.tsv +++ b/timelines/Elixir/run_3.tsv @@ -1,12 +1,14 @@ -9 2048 0 -32 2048 0 -55 2048 0 -79 2048 0 -102 2048 0 -126 2048 0 -149 2048 0 -173 2048 0 -200 2048 0 -223 2048 0 -248 2048 0 -272 2048 0 +8 2080768 0 +31 2080768 0 +55 2080768 0 +78 2080768 0 +110 2080768 0 +145 2080768 0 +177 2080768 0 +212 2080768 0 +242 2080768 0 +265 2080768 0 +288 2080768 0 +311 2080768 0 +335 2080768 0 +359 2080768 0 diff --git a/timelines/Elixir/run_4.tsv b/timelines/Elixir/run_4.tsv index 984b554..daccee5 100644 --- a/timelines/Elixir/run_4.tsv +++ b/timelines/Elixir/run_4.tsv @@ -1,12 +1,12 @@ -7 2048 0 -29 2048 0 -54 2048 0 -79 2048 0 -105 2048 0 -128 2048 0 -153 2048 0 -176 2048 0 -199 2048 0 -222 2048 0 -245 2048 0 -269 2048 0 +10 2097152 0 +34 2097152 0 +58 2097152 0 +84 2097152 0 +107 2097152 0 +130 2097152 0 +153 2097152 0 +177 2097152 0 +201 2097152 0 +224 2097152 0 +246 2097152 0 +270 2097152 0 diff --git a/timelines/Erlang/run_1.tsv b/timelines/Erlang/run_1.tsv index 526a43c..e77ca0f 100644 --- a/timelines/Erlang/run_1.tsv +++ b/timelines/Erlang/run_1.tsv @@ -1,6 +1,5 @@ -11 1984 0 -35 2096 0 -60 2096 0 -84 2096 0 -109 2096 0 -132 2096 +9 2015232 0 +32 2080768 0 +56 2080768 0 +78 2080768 0 +102 2080768 0 diff --git a/timelines/Erlang/run_2.tsv b/timelines/Erlang/run_2.tsv index 20a4253..afa0b33 100644 --- a/timelines/Erlang/run_2.tsv +++ b/timelines/Erlang/run_2.tsv @@ -1,6 +1,5 @@ -8 2064 0 -32 2064 0 -55 2064 0 -79 2064 0 -101 2064 0 -125 2064 +9 2080768 0 +31 2080768 0 +57 2080768 0 +83 2080768 0 +105 2080768 0 diff --git a/timelines/Erlang/run_3.tsv b/timelines/Erlang/run_3.tsv index 28f6bee..539ee69 100644 --- a/timelines/Erlang/run_3.tsv +++ b/timelines/Erlang/run_3.tsv @@ -1,6 +1,5 @@ -7 2064 0 -32 2064 0 -56 2064 0 -78 2064 0 -102 2064 0 -120 0 0 +8 2080768 0 +31 2080768 0 +55 2080768 0 +77 2080768 0 +100 2080768 0 diff --git a/timelines/Erlang/run_4.tsv b/timelines/Erlang/run_4.tsv index 28a5efe..19c5ae9 100644 --- a/timelines/Erlang/run_4.tsv +++ b/timelines/Erlang/run_4.tsv @@ -1,6 +1,5 @@ -8 2048 0 -33 2064 0 -55 2064 0 -79 2064 0 -101 2064 0 -122 2064 0 +10 2080768 0 +35 2080768 0 +58 2080768 0 +83 2080768 0 +107 2080768 0 diff --git a/timelines/Fortran/run_1.tsv b/timelines/Fortran/run_1.tsv index ce7728b..99b9342 100644 --- a/timelines/Fortran/run_1.tsv +++ b/timelines/Fortran/run_1.tsv @@ -1,3 +1 @@ -9 1776 0 -32 1776 8 -53 0 0 +7 1556480 diff --git a/timelines/Fortran/run_2.tsv b/timelines/Fortran/run_2.tsv index f5d14c7..f1b74c3 100644 --- a/timelines/Fortran/run_2.tsv +++ b/timelines/Fortran/run_2.tsv @@ -1,2 +1 @@ -8 1792 0 -32 1792 7 +6 0 0 diff --git a/timelines/Fortran/run_3.tsv b/timelines/Fortran/run_3.tsv index a1210d4..7c52524 100644 --- a/timelines/Fortran/run_3.tsv +++ b/timelines/Fortran/run_3.tsv @@ -1,2 +1 @@ -9 1792 0 -32 1792 0 +3 0 0 diff --git a/timelines/Fortran/run_4.tsv b/timelines/Fortran/run_4.tsv index a1210d4..2e535b7 100644 --- a/timelines/Fortran/run_4.tsv +++ b/timelines/Fortran/run_4.tsv @@ -1,2 +1 @@ -9 1792 0 -32 1792 0 +5 0 0 diff --git a/timelines/Go/run_1.tsv b/timelines/Go/run_1.tsv index 71b9739..3f48bec 100644 --- a/timelines/Go/run_1.tsv +++ b/timelines/Go/run_1.tsv @@ -1 +1 @@ -8 1632 0 +8 1884160 diff --git a/timelines/Go/run_2.tsv b/timelines/Go/run_2.tsv index f1b74c3..e69de29 100644 --- a/timelines/Go/run_2.tsv +++ b/timelines/Go/run_2.tsv @@ -1 +0,0 @@ -6 0 0 diff --git a/timelines/Go/run_3.tsv b/timelines/Go/run_3.tsv index 2e535b7..e69de29 100644 --- a/timelines/Go/run_3.tsv +++ b/timelines/Go/run_3.tsv @@ -1 +0,0 @@ -5 0 0 diff --git a/timelines/Go/run_4.tsv b/timelines/Go/run_4.tsv index f1b74c3..e69de29 100644 --- a/timelines/Go/run_4.tsv +++ b/timelines/Go/run_4.tsv @@ -1 +0,0 @@ -6 0 0 diff --git a/timelines/Haskell/run_1.tsv b/timelines/Haskell/run_1.tsv index 466add4..7e1a14a 100644 --- a/timelines/Haskell/run_1.tsv +++ b/timelines/Haskell/run_1.tsv @@ -1,2 +1 @@ -10 1520 0 -34 11872 0 +8 753664 0 diff --git a/timelines/Haskell/run_2.tsv b/timelines/Haskell/run_2.tsv index 5c72b06..5dced78 100644 --- a/timelines/Haskell/run_2.tsv +++ b/timelines/Haskell/run_2.tsv @@ -1 +1 @@ -7 10800 0 +8 12025856 0 diff --git a/timelines/Haskell/run_3.tsv b/timelines/Haskell/run_3.tsv index 30ceef3..94254d5 100644 --- a/timelines/Haskell/run_3.tsv +++ b/timelines/Haskell/run_3.tsv @@ -1 +1 @@ -9 10800 1 +7 12025856 0 diff --git a/timelines/Haskell/run_4.tsv b/timelines/Haskell/run_4.tsv index 778209c..94254d5 100644 --- a/timelines/Haskell/run_4.tsv +++ b/timelines/Haskell/run_4.tsv @@ -1 +1 @@ -8 10800 0 +7 12025856 0 diff --git a/timelines/Java/run_1.tsv b/timelines/Java/run_1.tsv index 32635be..fc58023 100644 --- a/timelines/Java/run_1.tsv +++ b/timelines/Java/run_1.tsv @@ -1,5 +1,6 @@ -9 1984 0 -33 2032 0 -56 2032 0 -80 2032 0 -107 2032 0 +8 2048000 0 +30 2048000 0 +53 2048000 0 +76 2048000 0 +99 2048000 0 +123 2048000 0 diff --git a/timelines/Java/run_2.tsv b/timelines/Java/run_2.tsv index c65221a..6363d7a 100644 --- a/timelines/Java/run_2.tsv +++ b/timelines/Java/run_2.tsv @@ -1,2 +1,2 @@ -8 2032 0 -30 2032 0 +9 2048000 0 +32 2048000 0 diff --git a/timelines/Java/run_3.tsv b/timelines/Java/run_3.tsv index 27c5eb8..a3a62bf 100644 --- a/timelines/Java/run_3.tsv +++ b/timelines/Java/run_3.tsv @@ -1,2 +1,2 @@ -9 2016 0 -36 2016 0 +8 2048000 0 +33 2048000 diff --git a/timelines/Java/run_4.tsv b/timelines/Java/run_4.tsv index e5d2f4c..86bd3a8 100644 --- a/timelines/Java/run_4.tsv +++ b/timelines/Java/run_4.tsv @@ -1,2 +1,2 @@ -9 2016 0 -35 2016 0 +9 2048000 0 +33 2048000 0 diff --git a/timelines/JavaScript/run_1.tsv b/timelines/JavaScript/run_1.tsv index 889e969..90cba96 100644 --- a/timelines/JavaScript/run_1.tsv +++ b/timelines/JavaScript/run_1.tsv @@ -1,25 +1,8 @@ -7 2048 0 -32 2048 0 -54 2048 0 -77 2048 0 -103 2048 0 -127 2048 0 -150 2048 0 -178 2048 0 -202 2048 0 -224 2048 0 -249 2048 0 -271 2048 0 -295 2048 0 -317 2048 0 -340 2048 0 -365 2048 0 -388 2048 0 -415 2048 0 -443 2048 0 -467 2048 0 -490 2048 0 -515 2048 0 -537 2048 0 -561 2048 0 -583 2048 0 +8 2080768 0 +32 2080768 0 +54 2080768 0 +76 2080768 0 +101 2080768 0 +123 2080768 0 +148 2080768 0 +170 2080768 0 diff --git a/timelines/JavaScript/run_2.tsv b/timelines/JavaScript/run_2.tsv index 122f312..0950d67 100644 --- a/timelines/JavaScript/run_2.tsv +++ b/timelines/JavaScript/run_2.tsv @@ -1,21 +1,3 @@ -8 2048 0 -33 2048 0 -65 2048 0 -90 2048 0 -114 2048 0 -138 2048 0 -161 2048 0 -186 2048 0 -209 2048 0 -232 2048 0 -257 2048 0 -281 2048 0 -304 2048 0 -338 2048 0 -361 2048 0 -385 2048 0 -406 2048 0 -429 2048 0 -452 2048 0 -476 2048 0 -494 0 0 +9 2080768 0 +34 2080768 0 +60 2080768 0 diff --git a/timelines/JavaScript/run_3.tsv b/timelines/JavaScript/run_3.tsv index 81fd9fa..f89cdba 100644 --- a/timelines/JavaScript/run_3.tsv +++ b/timelines/JavaScript/run_3.tsv @@ -1,22 +1,3 @@ -9 2048 0 -32 2048 0 -57 2048 0 -84 2048 0 -108 2048 0 -130 2048 0 -152 2048 0 -175 2048 0 -204 2048 0 -229 2048 0 -257 2048 0 -280 2048 0 -304 2048 0 -328 2048 0 -355 2048 0 -380 2048 0 -403 2048 0 -427 2048 0 -451 2048 0 -472 2048 0 -493 2048 0 -512 0 0 +8 2080768 0 +33 2080768 0 +57 2080768 0 diff --git a/timelines/JavaScript/run_4.tsv b/timelines/JavaScript/run_4.tsv index 6b642f1..d6a8a65 100644 --- a/timelines/JavaScript/run_4.tsv +++ b/timelines/JavaScript/run_4.tsv @@ -1,22 +1,3 @@ -9 2048 0 -32 2048 0 -55 2048 0 -84 2048 0 -108 2048 0 -132 2048 0 -155 2048 0 -179 2048 0 -202 2048 0 -226 2048 0 -252 2048 0 -276 2048 0 -297 2048 0 -322 2048 0 -348 2048 0 -373 2048 0 -396 2048 0 -418 2048 0 -443 2048 0 -466 2048 0 -488 2048 0 -507 0 0 +10 2080768 0 +35 2080768 0 +59 2080768 0 diff --git a/timelines/Julia/run_1.tsv b/timelines/Julia/run_1.tsv index ea4d0bb..12133ca 100644 --- a/timelines/Julia/run_1.tsv +++ b/timelines/Julia/run_1.tsv @@ -1,34 +1,33 @@ -8 2048 0 -32 2048 0 -55 2048 0 -77 2048 0 -102 2048 0 -124 2048 0 -149 2048 0 -171 2048 0 -195 2048 0 -219 2048 0 -243 2048 0 -268 2048 0 -293 2048 0 -317 2048 0 -342 2048 0 -366 2048 0 -390 2048 0 -413 2048 0 -436 2048 0 -464 2048 0 -486 2048 0 -506 2048 0 -530 2048 0 -553 2048 0 -582 2048 0 -605 2048 0 -630 2048 0 -652 2048 0 -675 2048 0 -699 2048 0 -722 2048 0 -753 2048 0 -785 2048 0 -807 0 0 +8 2080768 0 +30 2080768 0 +54 2080768 0 +77 2080768 0 +101 2080768 0 +130 2080768 0 +154 2080768 0 +176 2080768 0 +201 2080768 0 +223 2080768 0 +245 2080768 0 +273 2080768 0 +295 2080768 0 +319 2080768 0 +342 2080768 0 +366 2080768 0 +387 2080768 0 +411 2080768 0 +434 2080768 0 +455 2080768 0 +478 2080768 0 +516 2080768 0 +593 1277952 0 +621 1277952 0 +658 1277952 0 +684 1277952 0 +708 1277952 0 +733 1277952 0 +755 1277952 0 +778 1277952 0 +832 1277952 0 +993 1277952 0 +1018 1261568 0 diff --git a/timelines/Julia/run_2.tsv b/timelines/Julia/run_2.tsv index e95ada0..e9fdd09 100644 --- a/timelines/Julia/run_2.tsv +++ b/timelines/Julia/run_2.tsv @@ -1,6 +1,7 @@ -8 2048 0 -32 2048 0 -58 2048 0 -82 2048 0 -110 2048 0 -135 2048 0 +11 2097152 0 +48 2097152 0 +90 2097152 1 +160 2097152 1 +191 2031616 1 +218 2031616 0 +248 2031616 0 diff --git a/timelines/Julia/run_3.tsv b/timelines/Julia/run_3.tsv index 9537206..563ad7f 100644 --- a/timelines/Julia/run_3.tsv +++ b/timelines/Julia/run_3.tsv @@ -1,6 +1,6 @@ -8 2048 0 -33 2048 0 -56 2048 0 -81 2048 0 -103 2048 0 -128 2048 0 +8 2015232 0 +31 2080768 0 +58 2080768 0 +89 2080768 0 +115 2080768 0 +141 2080768 0 diff --git a/timelines/Julia/run_4.tsv b/timelines/Julia/run_4.tsv index ac4f147..2c226d9 100644 --- a/timelines/Julia/run_4.tsv +++ b/timelines/Julia/run_4.tsv @@ -1,6 +1,6 @@ -8 2048 0 -34 2048 0 -61 2048 0 -85 2048 0 -107 2048 0 -137 2048 0 +10 2080768 0 +34 2080768 0 +59 2080768 0 +83 2080768 0 +106 2080768 0 +131 2080768 0 diff --git a/timelines/Kotlin/run_1.tsv b/timelines/Kotlin/run_1.tsv index 1f3d980..df0f5dc 100644 --- a/timelines/Kotlin/run_1.tsv +++ b/timelines/Kotlin/run_1.tsv @@ -1,3 +1,8 @@ -8 1968 0 -34 2016 0 -56 2016 0 +18 2048000 0 +45 2048000 0 +70 2048000 0 +98 2048000 0 +122 2048000 0 +144 2048000 0 +167 2048000 0 +194 2048000 0 diff --git a/timelines/Kotlin/run_2.tsv b/timelines/Kotlin/run_2.tsv index e6e67bc..0d15db7 100644 --- a/timelines/Kotlin/run_2.tsv +++ b/timelines/Kotlin/run_2.tsv @@ -1,3 +1,2 @@ -8 2016 0 -34 2016 0 -59 2016 +8 2048000 0 +33 2048000 0 diff --git a/timelines/Kotlin/run_3.tsv b/timelines/Kotlin/run_3.tsv index 159660d..2c9fce5 100644 --- a/timelines/Kotlin/run_3.tsv +++ b/timelines/Kotlin/run_3.tsv @@ -1,3 +1,2 @@ -9 2016 0 -35 2016 0 -53 0 0 +8 2048000 0 +34 2048000 0 diff --git a/timelines/Kotlin/run_4.tsv b/timelines/Kotlin/run_4.tsv index 0c5fd44..4139a7c 100644 --- a/timelines/Kotlin/run_4.tsv +++ b/timelines/Kotlin/run_4.tsv @@ -1,3 +1,2 @@ -10 2016 0 -36 2016 0 -59 0 0 +10 2048000 0 +38 2048000 0 diff --git a/timelines/Lua/run_1.tsv b/timelines/Lua/run_1.tsv index cdc9e92..4026dde 100644 --- a/timelines/Lua/run_1.tsv +++ b/timelines/Lua/run_1.tsv @@ -1,4 +1 @@ -12 2080 0 -39 2080 0 -62 2080 0 -81 0 0 +8 2080768 0 diff --git a/timelines/Lua/run_2.tsv b/timelines/Lua/run_2.tsv index a7279f9..99a87bf 100644 --- a/timelines/Lua/run_2.tsv +++ b/timelines/Lua/run_2.tsv @@ -1,4 +1 @@ -9 2048 0 -31 2048 0 -57 2048 0 -80 2048 +9 2080768 diff --git a/timelines/Lua/run_3.tsv b/timelines/Lua/run_3.tsv index b5accd3..23463da 100644 --- a/timelines/Lua/run_3.tsv +++ b/timelines/Lua/run_3.tsv @@ -1,4 +1 @@ -8 2048 0 -32 2048 0 -54 2048 0 -76 2048 +8 2097152 0 diff --git a/timelines/Lua/run_4.tsv b/timelines/Lua/run_4.tsv index d2ed538..4e6de0d 100644 --- a/timelines/Lua/run_4.tsv +++ b/timelines/Lua/run_4.tsv @@ -1,4 +1 @@ -8 2048 0 -28 2048 0 -50 2048 0 -71 2048 0 +8 2080768 diff --git a/timelines/Nim/run_1.tsv b/timelines/Nim/run_1.tsv index 546981c..2e535b7 100644 --- a/timelines/Nim/run_1.tsv +++ b/timelines/Nim/run_1.tsv @@ -1 +1 @@ -8 2128 0 +5 0 0 diff --git a/timelines/Nim/run_2.tsv b/timelines/Nim/run_2.tsv index c20e260..e69de29 100644 --- a/timelines/Nim/run_2.tsv +++ b/timelines/Nim/run_2.tsv @@ -1 +0,0 @@ -8 2384 0 diff --git a/timelines/Nim/run_3.tsv b/timelines/Nim/run_3.tsv index 976967a..e69de29 100644 --- a/timelines/Nim/run_3.tsv +++ b/timelines/Nim/run_3.tsv @@ -1 +0,0 @@ -8 2368 0 diff --git a/timelines/Nim/run_4.tsv b/timelines/Nim/run_4.tsv index 976967a..e69de29 100644 --- a/timelines/Nim/run_4.tsv +++ b/timelines/Nim/run_4.tsv @@ -1 +0,0 @@ -8 2368 0 diff --git a/timelines/Objective-C/run_1.tsv b/timelines/Objective-C/run_1.tsv index 2e535b7..4bda737 100644 --- a/timelines/Objective-C/run_1.tsv +++ b/timelines/Objective-C/run_1.tsv @@ -1 +1 @@ -5 0 0 +5 5308416 0 diff --git a/timelines/Objective-C/run_3.tsv b/timelines/Objective-C/run_3.tsv index f1b74c3..dc38ba0 100644 --- a/timelines/Objective-C/run_3.tsv +++ b/timelines/Objective-C/run_3.tsv @@ -1 +1 @@ -6 0 0 +7 0 0 diff --git a/timelines/Objective-C/run_4.tsv b/timelines/Objective-C/run_4.tsv index f1b74c3..e69de29 100644 --- a/timelines/Objective-C/run_4.tsv +++ b/timelines/Objective-C/run_4.tsv @@ -1 +0,0 @@ -6 0 0 diff --git a/timelines/Odin/run_1.tsv b/timelines/Odin/run_1.tsv index 6c05300..dc38ba0 100644 --- a/timelines/Odin/run_1.tsv +++ b/timelines/Odin/run_1.tsv @@ -1 +1 @@ -10 2288 0 +7 0 0 diff --git a/timelines/Odin/run_2.tsv b/timelines/Odin/run_2.tsv index a1f758a..e69de29 100644 --- a/timelines/Odin/run_2.tsv +++ b/timelines/Odin/run_2.tsv @@ -1 +0,0 @@ -8 4096 0 diff --git a/timelines/Odin/run_3.tsv b/timelines/Odin/run_3.tsv index a1f758a..e69de29 100644 --- a/timelines/Odin/run_3.tsv +++ b/timelines/Odin/run_3.tsv @@ -1 +0,0 @@ -8 4096 0 diff --git a/timelines/Odin/run_4.tsv b/timelines/Odin/run_4.tsv index b956e0e..e69de29 100644 --- a/timelines/Odin/run_4.tsv +++ b/timelines/Odin/run_4.tsv @@ -1 +0,0 @@ -8 4176 1 diff --git a/timelines/PHP/run_1.tsv b/timelines/PHP/run_1.tsv index e94627e..5d53474 100644 --- a/timelines/PHP/run_1.tsv +++ b/timelines/PHP/run_1.tsv @@ -1,6 +1,6 @@ -11 2032 0 -98 2032 0 -140 2032 0 -163 2032 0 -184 2032 0 -206 2032 0 +8 2080768 0 +31 2080768 0 +52 2080768 0 +75 2080768 0 +97 2080768 0 +121 2080768 0 diff --git a/timelines/PHP/run_2.tsv b/timelines/PHP/run_2.tsv index 9c8021a..8f33786 100644 --- a/timelines/PHP/run_2.tsv +++ b/timelines/PHP/run_2.tsv @@ -1,3 +1,3 @@ -8 2032 0 -32 2032 0 -55 2032 +8 2080768 0 +32 2080768 0 +53 0 0 diff --git a/timelines/PHP/run_3.tsv b/timelines/PHP/run_3.tsv index 6d02339..90d68e1 100644 --- a/timelines/PHP/run_3.tsv +++ b/timelines/PHP/run_3.tsv @@ -1,3 +1,3 @@ -8 2032 0 -28 2032 0 -52 2032 0 +12 2080768 0 +35 2080768 0 +61 2080768 0 diff --git a/timelines/PHP/run_4.tsv b/timelines/PHP/run_4.tsv index c9e6f74..eec79ae 100644 --- a/timelines/PHP/run_4.tsv +++ b/timelines/PHP/run_4.tsv @@ -1,3 +1,3 @@ -8 2032 0 -32 2032 0 -53 2032 0 +9 2080768 0 +35 2080768 0 +56 2080768 0 diff --git a/timelines/Perl/run_1.tsv b/timelines/Perl/run_1.tsv index 720397d..0d15db7 100644 --- a/timelines/Perl/run_1.tsv +++ b/timelines/Perl/run_1.tsv @@ -1,9 +1,2 @@ -8 2016 0 -36 2016 0 -65 2016 0 -89 2016 0 -112 2016 0 -135 2016 0 -158 2016 0 -183 2016 0 -201 0 0 +8 2048000 0 +33 2048000 0 diff --git a/timelines/Perl/run_2.tsv b/timelines/Perl/run_2.tsv index 71f3190..087c0e2 100644 --- a/timelines/Perl/run_2.tsv +++ b/timelines/Perl/run_2.tsv @@ -1,2 +1,2 @@ -8 2000 0 -30 2000 0 +8 2048000 0 +31 2048000 diff --git a/timelines/Perl/run_3.tsv b/timelines/Perl/run_3.tsv index fe61644..e676621 100644 --- a/timelines/Perl/run_3.tsv +++ b/timelines/Perl/run_3.tsv @@ -1,2 +1,2 @@ -9 1984 0 -32 2000 +11 2064384 0 +34 2064384 diff --git a/timelines/Perl/run_4.tsv b/timelines/Perl/run_4.tsv index 71f3190..087c0e2 100644 --- a/timelines/Perl/run_4.tsv +++ b/timelines/Perl/run_4.tsv @@ -1,2 +1,2 @@ -8 2000 0 -30 2000 0 +8 2048000 0 +31 2048000 diff --git a/timelines/Python/run_1.tsv b/timelines/Python/run_1.tsv index f7d0c18..7d6b388 100644 --- a/timelines/Python/run_1.tsv +++ b/timelines/Python/run_1.tsv @@ -1,3 +1,3 @@ -11 1968 0 -37 2016 0 -57 0 0 +8 2048000 0 +30 2048000 0 +54 2048000 0 diff --git a/timelines/Python/run_2.tsv b/timelines/Python/run_2.tsv index 423837b..02d09ac 100644 --- a/timelines/Python/run_2.tsv +++ b/timelines/Python/run_2.tsv @@ -1,2 +1,2 @@ -9 2000 0 -31 2000 +9 2048000 0 +32 2048000 diff --git a/timelines/Python/run_3.tsv b/timelines/Python/run_3.tsv index 75cff76..e7c0b87 100644 --- a/timelines/Python/run_3.tsv +++ b/timelines/Python/run_3.tsv @@ -1,2 +1,2 @@ -9 2000 0 -32 2000 +11 2064384 0 +42 2064384 diff --git a/timelines/Python/run_4.tsv b/timelines/Python/run_4.tsv index d653ffc..f4c4432 100644 --- a/timelines/Python/run_4.tsv +++ b/timelines/Python/run_4.tsv @@ -1,2 +1,2 @@ -7 2000 0 -31 2000 0 +9 2048000 0 +33 2048000 diff --git a/timelines/R/run_1.tsv b/timelines/R/run_1.tsv index 231edf3..01a37bd 100644 --- a/timelines/R/run_1.tsv +++ b/timelines/R/run_1.tsv @@ -1,13 +1,13 @@ -12 1984 0 -37 2048 0 -61 2048 0 -86 2048 0 -110 2048 0 -132 2048 0 -156 2048 0 -178 2048 0 -200 2048 0 -222 2048 0 -245 2048 0 -265 2048 0 -288 0 0 +8 2097152 0 +30 2097152 0 +54 2097152 0 +77 2097152 0 +101 2097152 0 +125 2097152 0 +148 2097152 0 +170 2097152 0 +193 2097152 0 +216 2097152 0 +240 2097152 0 +263 2097152 0 +288 2097152 0 diff --git a/timelines/R/run_2.tsv b/timelines/R/run_2.tsv index 33e2a2c..4a7228e 100644 --- a/timelines/R/run_2.tsv +++ b/timelines/R/run_2.tsv @@ -1,7 +1,6 @@ -8 2032 0 -31 2032 0 -55 2032 0 -77 2032 0 -101 2032 0 -127 2032 0 -151 2032 0 +10 2080768 0 +39 2080768 0 +71 2080768 0 +95 2080768 0 +120 2080768 0 +143 2080768 0 diff --git a/timelines/R/run_3.tsv b/timelines/R/run_3.tsv index 1abdefc..2597a3b 100644 --- a/timelines/R/run_3.tsv +++ b/timelines/R/run_3.tsv @@ -1,7 +1,7 @@ -9 2032 0 -34 2032 0 -55 2032 0 -78 2032 0 -101 2032 0 -123 2032 0 -147 2032 0 +10 2080768 0 +33 2080768 0 +58 2080768 0 +82 2080768 0 +106 2080768 0 +131 2080768 0 +155 2080768 0 diff --git a/timelines/R/run_4.tsv b/timelines/R/run_4.tsv index 338e471..3a217ee 100644 --- a/timelines/R/run_4.tsv +++ b/timelines/R/run_4.tsv @@ -1,7 +1,7 @@ -9 2032 0 -32 2032 0 -57 2032 0 -79 2032 0 -103 2032 0 -127 2032 0 -151 2032 0 +8 2080768 0 +31 2080768 0 +55 2080768 0 +79 2080768 0 +103 2080768 0 +126 2080768 0 +150 2080768 0 diff --git a/timelines/Ruby/run_1.tsv b/timelines/Ruby/run_1.tsv index a1a376d..42b6598 100644 --- a/timelines/Ruby/run_1.tsv +++ b/timelines/Ruby/run_1.tsv @@ -1,4 +1,4 @@ -10 1968 0 -35 2016 0 -57 2016 0 -80 2016 0 +8 2048000 0 +32 2048000 0 +56 2048000 0 +80 2048000 0 diff --git a/timelines/Ruby/run_2.tsv b/timelines/Ruby/run_2.tsv index fc3a4b9..58fba11 100644 --- a/timelines/Ruby/run_2.tsv +++ b/timelines/Ruby/run_2.tsv @@ -1,3 +1,3 @@ -8 2000 0 -31 2000 0 -53 2000 0 +9 2048000 0 +32 2048000 0 +56 2048000 0 diff --git a/timelines/Ruby/run_3.tsv b/timelines/Ruby/run_3.tsv index a366d02..1ae9635 100644 --- a/timelines/Ruby/run_3.tsv +++ b/timelines/Ruby/run_3.tsv @@ -1,3 +1,3 @@ -9 2000 0 -31 2000 0 -56 2000 0 +8 2048000 0 +34 2048000 0 +58 2048000 0 diff --git a/timelines/Ruby/run_4.tsv b/timelines/Ruby/run_4.tsv index 47ebd27..931c4c1 100644 --- a/timelines/Ruby/run_4.tsv +++ b/timelines/Ruby/run_4.tsv @@ -1,3 +1,3 @@ -8 2000 0 -31 2000 0 -52 2000 0 +9 2048000 0 +34 2048000 0 +57 2048000 0 diff --git a/timelines/Rust/run_1.tsv b/timelines/Rust/run_1.tsv index f1b74c3..2e535b7 100644 --- a/timelines/Rust/run_1.tsv +++ b/timelines/Rust/run_1.tsv @@ -1 +1 @@ -6 0 0 +5 0 0 diff --git a/timelines/Scala/run_1.tsv b/timelines/Scala/run_1.tsv index 5df8530..733942d 100644 --- a/timelines/Scala/run_1.tsv +++ b/timelines/Scala/run_1.tsv @@ -1,32 +1,32 @@ -9 1968 0 -33 2048 0 -58 2048 0 -80 2048 0 -103 2048 0 -126 2048 0 -150 2048 0 -175 2048 0 -198 2048 0 -222 2048 0 -243 2048 0 -265 2048 0 -289 2048 0 -312 2048 0 -336 2048 0 -360 2048 0 -383 2048 0 -407 2048 0 -432 2048 0 -456 2048 0 -479 2048 0 -503 2048 0 -526 2048 0 -567 2048 0 -595 2048 0 -622 2048 0 -647 2048 0 -671 2048 0 -695 2048 0 -723 2048 0 -746 2048 0 -777 2048 0 +9 2015232 0 +34 2080768 0 +57 2080768 0 +84 2080768 0 +108 2080768 0 +132 2080768 0 +154 2080768 0 +177 2080768 0 +200 2080768 0 +223 2080768 0 +257 2080768 0 +287 2080768 0 +312 2080768 0 +334 2080768 0 +368 2080768 0 +415 2080768 0 +439 2080768 0 +465 2080768 0 +493 2080768 0 +516 2080768 0 +540 2080768 0 +565 2080768 0 +591 2080768 0 +616 2080768 0 +640 2080768 0 +666 2080768 0 +694 2080768 0 +744 2080768 0 +779 2080768 0 +815 2080768 0 +845 2080768 0 +870 0 0 diff --git a/timelines/Scala/run_2.tsv b/timelines/Scala/run_2.tsv index 0fcc745..f996ee7 100644 --- a/timelines/Scala/run_2.tsv +++ b/timelines/Scala/run_2.tsv @@ -1,15 +1,15 @@ -9 2048 0 -31 2048 0 -53 2048 0 -75 2048 0 -97 2048 0 -118 2048 0 -140 2048 0 -161 2048 0 -186 2048 0 -210 2048 0 -235 2048 0 -260 2048 0 -291 2048 0 -317 2048 0 -351 2048 0 +11 2015232 0 +33 2080768 0 +59 2080768 0 +83 2080768 0 +107 2080768 0 +129 2080768 0 +152 2080768 0 +176 2080768 0 +199 2080768 0 +227 2080768 0 +252 2080768 0 +279 2080768 0 +305 2080768 0 +330 2080768 0 +356 2080768 0 diff --git a/timelines/Scala/run_3.tsv b/timelines/Scala/run_3.tsv index 7943b6e..d6d2831 100644 --- a/timelines/Scala/run_3.tsv +++ b/timelines/Scala/run_3.tsv @@ -1,19 +1,15 @@ -9 2080 0 -31 2080 0 -55 2080 0 -77 2080 0 -101 2080 0 -124 2080 0 -148 2080 0 -172 2080 0 -194 2080 0 -219 2080 0 -240 2080 0 -263 2080 0 -287 2080 0 -311 2080 0 -336 2080 0 -360 2080 0 -387 2080 0 -414 2080 0 -445 2080 0 +10 2080768 0 +33 2080768 0 +59 2080768 0 +86 2080768 0 +110 2080768 0 +133 2080768 0 +156 2080768 0 +179 2080768 0 +202 2080768 0 +226 2080768 0 +252 2080768 0 +276 2080768 0 +303 2080768 0 +329 2080768 0 +351 0 0 diff --git a/timelines/Scala/run_4.tsv b/timelines/Scala/run_4.tsv index 4fbe921..b377b32 100644 --- a/timelines/Scala/run_4.tsv +++ b/timelines/Scala/run_4.tsv @@ -1,18 +1,17 @@ -9 2048 0 -33 2048 0 -54 2048 0 -79 2048 0 -103 2048 0 -126 2048 0 -149 2048 0 -170 2048 0 -193 2048 0 -231 2048 0 -254 2048 0 -278 2048 0 -302 2048 0 -326 2048 0 -350 2048 0 -376 2048 0 -402 2048 0 -421 0 0 +8 2080768 0 +31 2080768 0 +53 2080768 0 +76 2080768 0 +100 2080768 0 +125 2080768 0 +149 2080768 0 +170 2080768 0 +199 2080768 0 +230 2080768 0 +254 2080768 0 +279 2080768 0 +307 2080768 0 +332 2080768 0 +356 2080768 0 +381 2080768 0 +404 2080768 0 diff --git a/timelines/Swift/run_1.tsv b/timelines/Swift/run_1.tsv index 7f8ac9b..e6b05bb 100644 --- a/timelines/Swift/run_1.tsv +++ b/timelines/Swift/run_1.tsv @@ -1 +1 @@ -10 5648 0 +8 327680 0 diff --git a/timelines/Swift/run_2.tsv b/timelines/Swift/run_2.tsv index dc38ba0..f1b74c3 100644 --- a/timelines/Swift/run_2.tsv +++ b/timelines/Swift/run_2.tsv @@ -1 +1 @@ -7 0 0 +6 0 0 diff --git a/timelines/Swift/run_4.tsv b/timelines/Swift/run_4.tsv index 2e535b7..f1b74c3 100644 --- a/timelines/Swift/run_4.tsv +++ b/timelines/Swift/run_4.tsv @@ -1 +1 @@ -5 0 0 +6 0 0 diff --git a/timelines/TypeScript/run_1.tsv b/timelines/TypeScript/run_1.tsv index 4c28424..39c3b9e 100644 --- a/timelines/TypeScript/run_1.tsv +++ b/timelines/TypeScript/run_1.tsv @@ -1,64 +1,53 @@ -11 2048 0 -37 2048 0 -62 2048 0 -86 2048 0 -110 2048 0 -133 2048 0 -157 2048 0 -180 2048 0 -211 2048 0 -235 2048 0 -262 2048 0 -285 2048 0 -310 2048 0 -361 2048 0 -386 2048 0 -411 2048 0 -436 2048 0 -461 2048 0 -525 2048 0 -550 2048 0 -573 2048 0 -597 2048 0 -619 2048 0 -643 2048 0 -666 2048 0 -690 2048 0 -712 2048 0 -735 2048 0 -759 2048 0 -783 2048 0 -808 2048 0 -835 2048 0 -861 2048 0 -890 2048 0 -918 2048 0 -947 2048 0 -976 2048 0 -1004 2048 0 -1033 2048 0 -1063 2048 0 -1092 2048 0 -1118 2048 0 -1145 2048 0 -1178 2048 0 -1209 2048 0 -1235 2048 0 -1265 2048 0 -1292 2048 0 -1315 2048 0 -1339 2048 0 -1363 2048 0 -1386 2048 0 -1410 2048 0 -1435 2048 0 -1461 2048 0 -1483 2048 0 -1506 2048 0 -1536 2048 0 -1565 2048 0 -1589 2048 0 -1614 2048 0 -1637 2048 0 -1662 2048 0 -1685 2048 0 +8 2080768 0 +32 2080768 0 +56 2080768 0 +79 2080768 0 +102 2080768 0 +128 2080768 0 +151 2080768 0 +179 2080768 0 +212 2080768 0 +268 2080768 0 +293 2080768 0 +316 2080768 0 +343 2080768 0 +368 2080768 0 +394 2080768 0 +417 2080768 0 +441 2080768 0 +464 2080768 0 +488 2080768 0 +511 2080768 0 +534 2080768 0 +561 2080768 0 +585 2080768 0 +612 2080768 0 +634 2080768 0 +658 2080768 0 +682 2080768 0 +706 2080768 0 +729 2080768 0 +753 2080768 0 +777 2080768 0 +803 2080768 0 +828 2080768 0 +852 2080768 0 +879 2080768 0 +906 2080768 0 +930 2080768 0 +954 2080768 0 +979 2080768 0 +1003 2080768 0 +1030 2080768 0 +1060 2080768 0 +1090 2080768 0 +1121 2080768 0 +1150 2080768 0 +1179 2080768 0 +1208 2080768 0 +1237 2080768 0 +1267 2080768 0 +1299 2080768 0 +1325 2080768 0 +1349 2080768 0 +1375 2080768 0 diff --git a/timelines/TypeScript/run_2.tsv b/timelines/TypeScript/run_2.tsv index d52644a..6edc65f 100644 --- a/timelines/TypeScript/run_2.tsv +++ b/timelines/TypeScript/run_2.tsv @@ -1,54 +1,34 @@ -9 1984 0 -37 2064 0 -63 2064 0 -94 2064 0 -121 2064 0 -153 2064 0 -178 2064 0 -206 2064 0 -229 2064 0 -254 2064 0 -279 2064 0 -305 2064 0 -327 2064 0 -351 2064 0 -376 2064 0 -401 2064 0 -424 2064 0 -451 2064 0 -474 2064 0 -500 2064 0 -525 2064 0 -551 2064 0 -576 2064 0 -606 2064 0 -657 2064 0 -692 2064 0 -724 2064 0 -759 2064 0 -788 2064 0 -817 2064 0 -845 2064 0 -876 2064 0 -910 2064 0 -938 2064 0 -963 2064 0 -993 2064 0 -1019 2064 0 -1043 2064 0 -1069 2064 0 -1093 2064 0 -1118 2064 0 -1142 2064 0 -1166 2064 0 -1191 2064 0 -1216 2064 0 -1241 2064 0 -1270 2064 0 -1297 2064 0 -1322 2064 0 -1346 2064 0 -1371 2064 0 -1393 2064 0 -1419 2064 0 -1443 2064 0 +9 2080768 0 +34 2080768 0 +59 2080768 0 +86 2080768 0 +111 2080768 0 +135 2080768 0 +158 2080768 0 +183 2080768 0 +208 2080768 0 +235 2080768 0 +258 2080768 0 +280 2080768 0 +304 2080768 0 +326 2080768 0 +354 2080768 0 +376 2080768 0 +401 2080768 0 +426 2080768 0 +451 2080768 0 +474 2080768 0 +499 2080768 0 +524 2080768 0 +550 2080768 0 +586 2080768 0 +618 2080768 0 +649 2080768 0 +684 2080768 0 +713 2080768 0 +744 2080768 0 +783 2080768 0 +814 2080768 0 +840 2080768 0 +864 2080768 0 +890 2080768 diff --git a/timelines/TypeScript/run_3.tsv b/timelines/TypeScript/run_3.tsv index 3fe74d4..1c8354b 100644 --- a/timelines/TypeScript/run_3.tsv +++ b/timelines/TypeScript/run_3.tsv @@ -1,53 +1,35 @@ -8 2048 0 -30 2048 0 -54 2048 0 -79 2048 0 -104 2048 0 -128 2048 0 -153 2048 0 -179 2048 0 -203 2048 0 -225 2048 0 -250 2048 0 -272 2048 0 -294 2048 0 -316 2048 0 -338 2048 0 -363 2048 0 -387 2048 0 -410 2048 0 -435 2048 0 -457 2048 0 -482 2048 0 -507 2048 0 -530 2048 0 -555 2048 0 -581 2048 0 -610 2048 0 -644 2048 0 -676 2048 0 -709 2048 0 -737 2048 0 -766 2048 0 -799 2048 0 -833 2048 0 -863 2048 0 -888 2048 0 -917 2048 0 -941 2048 0 -962 2048 0 -987 2048 0 -1011 2048 0 -1035 2048 0 -1058 2048 0 -1081 2048 0 -1107 2048 0 -1130 2048 0 -1156 2048 0 -1185 2048 0 -1210 2048 0 -1235 2048 0 -1257 2048 0 -1281 2048 0 -1305 2048 0 -1329 2048 0 +8 2080768 0 +32 2080768 0 +56 2080768 0 +88 2080768 0 +121 2080768 0 +146 2080768 0 +170 2080768 0 +198 2080768 0 +223 2080768 0 +249 2080768 0 +270 2080768 0 +292 2080768 0 +313 2080768 0 +334 2080768 0 +357 2080768 0 +381 2080768 0 +405 2080768 0 +430 2080768 0 +455 2080768 0 +480 2080768 0 +502 2080768 0 +526 2080768 0 +553 2080768 0 +583 2080768 0 +612 2080768 0 +643 2080768 0 +676 2080768 0 +710 2080768 0 +738 2080768 0 +771 2080768 0 +802 2080768 0 +837 2080768 0 +866 2080768 0 +890 2080768 0 +914 2080768 0 diff --git a/timelines/TypeScript/run_4.tsv b/timelines/TypeScript/run_4.tsv index 72467c7..487bc2d 100644 --- a/timelines/TypeScript/run_4.tsv +++ b/timelines/TypeScript/run_4.tsv @@ -1,51 +1,34 @@ -7 2080 0 -30 2080 0 -53 2080 0 -78 2080 0 -105 2080 0 -130 2080 0 -155 2080 0 -176 2080 0 -202 2080 0 -226 2080 0 -249 2080 0 -273 2080 0 -297 2080 0 -322 2080 0 -347 2080 0 -376 2080 0 -407 2080 0 -431 2080 0 -457 2080 0 -483 2080 0 -506 2080 0 -530 2080 0 -560 2080 0 -590 2080 0 -619 2080 0 -648 2080 0 -679 2080 0 -708 2080 0 -745 2080 0 -776 2080 0 -808 2080 0 -843 2080 0 -870 2080 0 -897 2080 0 -926 2080 0 -959 2080 0 -988 2080 0 -1015 2080 0 -1041 2080 0 -1065 2080 0 -1090 2080 0 -1114 2080 0 -1139 2080 0 -1163 2080 0 -1195 2080 0 -1220 2080 0 -1245 2080 0 -1269 2080 0 -1291 2080 0 -1314 2080 0 -1338 2080 0 +16 2097152 0 +41 2097152 0 +67 2097152 0 +91 2097152 0 +121 2097152 1 +146 2097152 1 +171 2097152 1 +198 2097152 1 +222 2097152 1 +245 2097152 0 +271 2097152 0 +293 2097152 0 +317 2097152 0 +341 2097152 0 +367 2097152 0 +389 2097152 0 +412 2097152 0 +438 2097152 0 +463 2097152 0 +490 2097152 0 +515 2097152 0 +539 2097152 0 +567 2097152 0 +599 2097152 0 +637 2097152 0 +672 2097152 0 +705 2097152 0 +733 2097152 0 +758 2097152 0 +784 2097152 0 +815 2097152 0 +842 2097152 0 +866 2097152 0 +889 2097152 0 diff --git a/timelines/Wolfram/run_1.tsv b/timelines/Wolfram/run_1.tsv index 7d53b59..490750d 100644 --- a/timelines/Wolfram/run_1.tsv +++ b/timelines/Wolfram/run_1.tsv @@ -1,2 +1,2 @@ -10 1984 0 -31 0 0 +8 2080768 0 +31 2080768 0 diff --git a/timelines/Zig/run_1.tsv b/timelines/Zig/run_1.tsv index 68a722a..9b65fe3 100644 --- a/timelines/Zig/run_1.tsv +++ b/timelines/Zig/run_1.tsv @@ -1 +1 @@ -12 2384 0 +8 2457600 0 diff --git a/timelines/Zig/run_2.tsv b/timelines/Zig/run_2.tsv index 5d6764a..7e50b2d 100644 --- a/timelines/Zig/run_2.tsv +++ b/timelines/Zig/run_2.tsv @@ -1 +1 @@ -8 2720 0 +9 2818048 diff --git a/timelines/Zig/run_3.tsv b/timelines/Zig/run_3.tsv index b25a0c4..312e03e 100644 --- a/timelines/Zig/run_3.tsv +++ b/timelines/Zig/run_3.tsv @@ -1 +1 @@ -7 2720 +8 2818048 diff --git a/timelines/Zig/run_4.tsv b/timelines/Zig/run_4.tsv index 5d6764a..312e03e 100644 --- a/timelines/Zig/run_4.tsv +++ b/timelines/Zig/run_4.tsv @@ -1 +1 @@ -8 2720 0 +8 2818048