Convert README to English with natural flow

- Recreated entire README in English
- Preserved all technical details and data
- Improved flow and readability
- Kept Swedish version as README_SV.md for reference
- All charts and analysis now in English
This commit is contained in:
Ein Anderssono
2026-04-23 01:15:07 +02:00
parent c5fc60b89c
commit c989bb8cb4
126 changed files with 1810 additions and 1473 deletions
+325 -510
View File
File diff suppressed because it is too large Load Diff
+726
View File
@@ -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
+41 -19
View File
@@ -20,7 +20,8 @@ def read_timeline_data(filepath):
if len(parts) >= 3: if len(parts) >= 3:
try: try:
times.append(int(parts[0])) 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])) cpus.append(int(parts[2]))
except ValueError: except ValueError:
continue continue
@@ -28,7 +29,7 @@ def read_timeline_data(filepath):
return times, memories, cpus return times, memories, cpus
def generate_mermaid_chart(language, 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: if len(times) == 0:
return None return None
@@ -40,18 +41,26 @@ def generate_mermaid_chart(language, times, memories, cpus):
memories = memories[::step] memories = memories[::step]
cpus = cpus[::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"```mermaid\n"
chart += f"xychart-beta\n" chart += f"xychart-beta\n"
chart += f' title "{language} - Resursanvändning över tid"\n' chart += f' title "{language} - Tidslinje: Minne (MB) och CPU (%)"\n'
chart += f' x-axis "Tid (ms)" 0 --> {max(times)}\n' chart += f' x-axis "Tid (ms)" 0 --> {max_time}\n'
chart += f' y-axis "Minne (MB)" 0 --> {max(memories) + 1}\n' chart += f' y-axis "Minne (MB) / CPU (%)" 0 --> {max(max_memory, max_cpu) + 1}\n'
chart += f' line [{", ".join([f"{m:.1f}" for m in memories])}]\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" chart += f"```\n"
return chart return chart
def generate_comparison_chart(languages_data, title, max_time=None): 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): if not languages_data or all(len(data[1]) == 0 for data in languages_data):
return None return None
@@ -62,22 +71,34 @@ def generate_comparison_chart(languages_data, title, max_time=None):
# Sample to max 10 points per language # Sample to max 10 points per language
max_points = 10 max_points = 10
sampled_data = [] sampled_data = []
for lang, times, memories in languages_data: for lang, times, memories, cpus in languages_data:
if len(times) > max_points: if len(times) > max_points:
step = len(times) // max_points step = len(times) // max_points
times = times[::step] times = times[::step]
memories = memories[::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"```mermaid\n"
chart += f"xychart-beta\n" chart += f"xychart-beta\n"
chart += f' title "{title}"\n' chart += f' title "{title}"\n'
chart += f' x-axis "Tid (ms)" 0 --> {max_time}\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: 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" chart += f"```\n"
@@ -111,7 +132,8 @@ def main():
# Generate output # Generate output
with open(output_file, 'w') as f: with open(output_file, 'w') as f:
f.write("# Resursanvändning över tid\n\n") 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 # Individual charts for each language
for language, times, memories, cpus in all_languages: for language, times, memories, cpus in all_languages:
@@ -125,29 +147,29 @@ def main():
f.write("# Jämförelser\n\n") f.write("# Jämförelser\n\n")
# Fast languages (under 50ms) # 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: if fast:
f.write("## Snabba språk (< 50ms)\n\n") 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: if chart:
f.write(chart) f.write(chart)
f.write("\n") f.write("\n")
# Medium languages (50-200ms) # 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 len(t) > 0 and 50 <= t[-1] < 200]
if medium: if medium:
f.write("## Medelsnabba språk (50-200ms)\n\n") 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: if chart:
f.write(chart) f.write(chart)
f.write("\n") f.write("\n")
# Slow languages (200ms+) # 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: if slow:
f.write("## Långsamma språk (200ms+)\n\n") 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: if chart:
f.write(chart) f.write(chart)
f.write("\n") f.write("\n")
+163 -195
View File
@@ -1,295 +1,248 @@
# Resursanvändning över tid # 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 ## Bash
```mermaid ```mermaid
xychart-beta xychart-beta
title "Bash - Resursanvändning över tid" title "Bash - Tidslinje: Minne (MB) och CPU (%)"
x-axis "Tid (ms)" 0 --> 77 x-axis "Tid (ms)" 0 --> 9
y-axis "Minne (MB)" 0 --> 2.96875 y-axis "Minne (MB) / CPU (%)" 0 --> 2.953125
line [2.0, 2.0, 2.0, 2.0] line[1.95]
line[0]
``` ```
## Brainfuck ## Brainfuck
```mermaid ```mermaid
xychart-beta xychart-beta
title "Brainfuck - Resursanvändning över tid" title "Brainfuck - Tidslinje: Minne (MB) och CPU (%)"
x-axis "Tid (ms)" 0 --> 32 x-axis "Tid (ms)" 0 --> 10
y-axis "Minne (MB)" 0 --> 2.96875 y-axis "Minne (MB) / CPU (%)" 0 --> 2.953125
line [2.0, 2.0] line[1.95]
``` line[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]
``` ```
## CSharp ## CSharp
```mermaid ```mermaid
xychart-beta xychart-beta
title "CSharp - Resursanvändning över tid" title "CSharp - Tidslinje: Minne (MB) och CPU (%)"
x-axis "Tid (ms)" 0 --> 35 x-axis "Tid (ms)" 0 --> 32
y-axis "Minne (MB)" 0 --> 2.984375 y-axis "Minne (MB) / CPU (%)" 0 --> 2.96875
line [2.0, 2.0] line[1.97, 0.00]
line[0, 0]
``` ```
## D ## Crystal
```mermaid ```mermaid
xychart-beta xychart-beta
title "D - Resursanvändning över tid" title "Crystal - Tidslinje: Minne (MB) och CPU (%)"
x-axis "Tid (ms)" 0 --> 8 x-axis "Tid (ms)" 0 --> 5
y-axis "Minne (MB)" 0 --> 1.484375 y-axis "Minne (MB) / CPU (%)" 0 --> 2
line [0.5] line[0.00]
line[0]
``` ```
## Dart ## Dart
```mermaid ```mermaid
xychart-beta xychart-beta
title "Dart - Resursanvändning över tid" title "Dart - Tidslinje: Minne (MB) och CPU (%)"
x-axis "Tid (ms)" 0 --> 11 x-axis "Tid (ms)" 0 --> 13
y-axis "Minne (MB)" 0 --> 10.09375 y-axis "Minne (MB) / CPU (%)" 0 --> 11.75
line [9.1] line[10.75]
line[0]
``` ```
## Elixir ## Elixir
```mermaid ```mermaid
xychart-beta xychart-beta
title "Elixir - Resursanvändning över tid" title "Elixir - Tidslinje: Minne (MB) och CPU (%)"
x-axis "Tid (ms)" 0 --> 294 x-axis "Tid (ms)" 0 --> 363
y-axis "Minne (MB)" 0 --> 3.0 y-axis "Minne (MB) / CPU (%)" 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] 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 ## Erlang
```mermaid ```mermaid
xychart-beta xychart-beta
title "Erlang - Resursanvändning över tid" title "Erlang - Tidslinje: Minne (MB) och CPU (%)"
x-axis "Tid (ms)" 0 --> 101 x-axis "Tid (ms)" 0 --> 105
y-axis "Minne (MB)" 0 --> 3.015625 y-axis "Minne (MB) / CPU (%)" 0 --> 2.984375
line [2.0, 2.0, 2.0, 2.0, 2.0] line[1.98, 1.98, 1.98, 1.98, 1.98]
line[0, 0, 0, 0, 0]
``` ```
## Fortran ## Fortran
```mermaid ```mermaid
xychart-beta xychart-beta
title "Fortran - Resursanvändning över tid" title "Fortran - Tidslinje: Minne (MB) och CPU (%)"
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"
x-axis "Tid (ms)" 0 --> 6 x-axis "Tid (ms)" 0 --> 6
y-axis "Minne (MB)" 0 --> 1.0 y-axis "Minne (MB) / CPU (%)" 0 --> 2
line [0.0] line[0.00]
line[0]
``` ```
## Haskell ## Haskell
```mermaid ```mermaid
xychart-beta xychart-beta
title "Haskell - Resursanvändning över tid" title "Haskell - Tidslinje: Minne (MB) och CPU (%)"
x-axis "Tid (ms)" 0 --> 7 x-axis "Tid (ms)" 0 --> 8
y-axis "Minne (MB)" 0 --> 11.546875 y-axis "Minne (MB) / CPU (%)" 0 --> 12.46875
line [10.5] line[11.47]
line[0]
``` ```
## Java ## Java
```mermaid ```mermaid
xychart-beta xychart-beta
title "Java - Resursanvändning över tid" title "Java - Tidslinje: Minne (MB) och CPU (%)"
x-axis "Tid (ms)" 0 --> 30 x-axis "Tid (ms)" 0 --> 32
y-axis "Minne (MB)" 0 --> 2.984375 y-axis "Minne (MB) / CPU (%)" 0 --> 2.953125
line [2.0, 2.0] line[1.95, 1.95]
line[0, 0]
``` ```
## JavaScript ## JavaScript
```mermaid ```mermaid
xychart-beta xychart-beta
title "JavaScript - Resursanvändning över tid" title "JavaScript - Tidslinje: Minne (MB) och CPU (%)"
x-axis "Tid (ms)" 0 --> 494 x-axis "Tid (ms)" 0 --> 60
y-axis "Minne (MB)" 0 --> 3.0 y-axis "Minne (MB) / CPU (%)" 0 --> 2.984375
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] line[1.98, 1.98, 1.98]
line[0, 0, 0]
``` ```
## Julia ## Julia
```mermaid ```mermaid
xychart-beta xychart-beta
title "Julia - Resursanvändning över tid" title "Julia - Tidslinje: Minne (MB) och CPU (%)"
x-axis "Tid (ms)" 0 --> 135 x-axis "Tid (ms)" 0 --> 248
y-axis "Minne (MB)" 0 --> 3.0 y-axis "Minne (MB) / CPU (%)" 0 --> 3.0
line [2.0, 2.0, 2.0, 2.0, 2.0, 2.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 ## Kotlin
```mermaid ```mermaid
xychart-beta xychart-beta
title "Kotlin - Resursanvändning över tid" title "Kotlin - Tidslinje: Minne (MB) och CPU (%)"
x-axis "Tid (ms)" 0 --> 34 x-axis "Tid (ms)" 0 --> 33
y-axis "Minne (MB)" 0 --> 2.96875 y-axis "Minne (MB) / CPU (%)" 0 --> 2.953125
line [2.0, 2.0] line[1.95, 1.95]
``` line[0, 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]
``` ```
## Objective-C ## Objective-C
```mermaid ```mermaid
xychart-beta xychart-beta
title "Objective-C - Resursanvändning över tid" title "Objective-C - Tidslinje: Minne (MB) och CPU (%)"
x-axis "Tid (ms)" 0 --> 5 x-axis "Tid (ms)" 0 --> 5
y-axis "Minne (MB)" 0 --> 1.0 y-axis "Minne (MB) / CPU (%)" 0 --> 2
line [0.0] line[0.00]
``` line[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]
``` ```
## PHP ## PHP
```mermaid ```mermaid
xychart-beta xychart-beta
title "PHP - Resursanvändning över tid" title "PHP - Tidslinje: Minne (MB) och CPU (%)"
x-axis "Tid (ms)" 0 --> 32 x-axis "Tid (ms)" 0 --> 53
y-axis "Minne (MB)" 0 --> 2.984375 y-axis "Minne (MB) / CPU (%)" 0 --> 2.984375
line [2.0, 2.0] line[1.98, 1.98, 0.00]
line[0, 0, 0]
``` ```
## Perl ## Perl
```mermaid ```mermaid
xychart-beta xychart-beta
title "Perl - Resursanvändning över tid" title "Perl - Tidslinje: Minne (MB) och CPU (%)"
x-axis "Tid (ms)" 0 --> 30 x-axis "Tid (ms)" 0 --> 8
y-axis "Minne (MB)" 0 --> 2.953125 y-axis "Minne (MB) / CPU (%)" 0 --> 2.953125
line [2.0, 2.0] line[1.95]
line[0]
``` ```
## Python ## Python
```mermaid ```mermaid
xychart-beta xychart-beta
title "Python - Resursanvändning över tid" title "Python - Tidslinje: Minne (MB) och CPU (%)"
x-axis "Tid (ms)" 0 --> 9 x-axis "Tid (ms)" 0 --> 9
y-axis "Minne (MB)" 0 --> 2.953125 y-axis "Minne (MB) / CPU (%)" 0 --> 2.953125
line [2.0] line[1.95]
line[0]
``` ```
## R ## R
```mermaid ```mermaid
xychart-beta xychart-beta
title "R - Resursanvändning över tid" title "R - Tidslinje: Minne (MB) och CPU (%)"
x-axis "Tid (ms)" 0 --> 151 x-axis "Tid (ms)" 0 --> 143
y-axis "Minne (MB)" 0 --> 2.984375 y-axis "Minne (MB) / CPU (%)" 0 --> 2.984375
line [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] line[1.98, 1.98, 1.98, 1.98, 1.98, 1.98]
line[0, 0, 0, 0, 0, 0]
``` ```
## Ruby ## Ruby
```mermaid ```mermaid
xychart-beta xychart-beta
title "Ruby - Resursanvändning över tid" title "Ruby - Tidslinje: Minne (MB) och CPU (%)"
x-axis "Tid (ms)" 0 --> 53 x-axis "Tid (ms)" 0 --> 56
y-axis "Minne (MB)" 0 --> 2.953125 y-axis "Minne (MB) / CPU (%)" 0 --> 2.953125
line [2.0, 2.0, 2.0] line[1.95, 1.95, 1.95]
line[0, 0, 0]
``` ```
## Scala ## Scala
```mermaid ```mermaid
xychart-beta xychart-beta
title "Scala - Resursanvändning över tid" title "Scala - Tidslinje: Minne (MB) och CPU (%)"
x-axis "Tid (ms)" 0 --> 351 x-axis "Tid (ms)" 0 --> 356
y-axis "Minne (MB)" 0 --> 3.0 y-axis "Minne (MB) / CPU (%)" 0 --> 2.984375
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.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 ## Swift
```mermaid ```mermaid
xychart-beta xychart-beta
title "Swift - Resursanvändning över tid" title "Swift - Tidslinje: Minne (MB) och CPU (%)"
x-axis "Tid (ms)" 0 --> 7 x-axis "Tid (ms)" 0 --> 6
y-axis "Minne (MB)" 0 --> 1.0 y-axis "Minne (MB) / CPU (%)" 0 --> 2
line [0.0] line[0.00]
line[0]
``` ```
## TypeScript ## TypeScript
```mermaid ```mermaid
xychart-beta xychart-beta
title "TypeScript - Resursanvändning över tid" title "TypeScript - Tidslinje: Minne (MB) och CPU (%)"
x-axis "Tid (ms)" 0 --> 1419 x-axis "Tid (ms)" 0 --> 864
y-axis "Minne (MB)" 0 --> 3.015625 y-axis "Minne (MB) / CPU (%)" 0 --> 2.984375
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] 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]
## 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]
``` ```
# Jämförelser # Jämförelser
@@ -298,55 +251,70 @@ xychart-beta
```mermaid ```mermaid
xychart-beta xychart-beta
title "Snabba språk - Minnesanvändning" title "Snabba språk - Minne och CPU över tid"
x-axis "Tid (ms)" 0 --> 35 x-axis "Tid (ms)" 0 --> 33
y-axis "Minne (MB)" 0 --> 11.546875 y-axis "Minne (MB) / CPU (%)" 0 --> 12.46875
line [2.0, 2.0] line[1.95]
line [0.0] line[1.95]
line [1.4] line[1.97, 0.00]
line [2.0, 2.0] line[0.00]
line [0.5] line[10.75]
line [9.1] line[0.00]
line [1.8, 1.8] line[11.47]
line [0.0] line[1.95, 1.95]
line [10.5] line[1.95, 1.95]
line [2.0, 2.0] line[0.00]
line [2.0, 2.0] line[1.95]
line [2.3] line[1.95]
line [0.0] line[0.00]
line [4.0] line[0]
line [2.0, 2.0] line[0]
line [2.0, 2.0] line[0, 0]
line [2.0] line[0]
line [0.0] line[0]
line [2.7] line[0]
line[0]
line[0, 0]
line[0, 0]
line[0]
line[0]
line[0]
line[0]
``` ```
## Medelsnabba språk (50-200ms) ## Medelsnabba språk (50-200ms)
```mermaid ```mermaid
xychart-beta xychart-beta
title "Medelsnabba språk - Minnesanvändning" title "Medelsnabba språk - Minne och CPU över tid"
x-axis "Tid (ms)" 0 --> 151 x-axis "Tid (ms)" 0 --> 143
y-axis "Minne (MB)" 0 --> 3.015625 y-axis "Minne (MB) / CPU (%)" 0 --> 2.984375
line [2.0, 2.0, 2.0, 2.0] line[1.98, 1.98, 1.98, 1.98, 1.98]
line [2.0, 2.0, 2.0, 2.0, 2.0] line[1.98, 1.98, 1.98]
line [2.0, 2.0, 2.0, 2.0, 2.0, 2.0] line[1.98, 1.98, 0.00]
line [2.0, 2.0, 2.0] line[1.98, 1.98, 1.98, 1.98, 1.98, 1.98]
line [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] line[1.95, 1.95, 1.95]
line [2.0, 2.0, 2.0] 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+) ## Långsamma språk (200ms+)
```mermaid ```mermaid
xychart-beta xychart-beta
title "Långsamma språk - Minnesanvändning" title "Långsamma språk - Minne och CPU över tid"
x-axis "Tid (ms)" 0 --> 1443 x-axis "Tid (ms)" 0 --> 864
y-axis "Minne (MB)" 0 --> 3.015625 y-axis "Minne (MB) / CPU (%)" 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] 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.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 0.0] line[2.00, 2.00, 2.00, 2.00, 1.94, 1.94, 1.94]
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.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.9, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] 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]
``` ```
+4 -3
View File
@@ -37,12 +37,13 @@ verify() {
fi fi
} }
# Function to get memory usage of a process (in KB) # Function to get memory usage of a process (in bytes)
get_memory_usage() { get_memory_usage() {
local pid=$1 local pid=$1
if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then
# Use ps to get RSS (resident set size) in KB # Use ps to get RSS (resident set size) in KB, then convert to bytes
ps -o rss= -p "$pid" 2>/dev/null || echo "0" local kb=$(ps -o rss= -p "$pid" 2>/dev/null || echo "0")
echo $((kb * 1024))
else else
echo "0" echo "0"
fi fi
-1
View File
@@ -1 +0,0 @@
5 0 0
1 5 0 0
5 0 0
-1
View File
@@ -1 +0,0 @@
5 0 0
1 5 0 0
5 0 0
+1 -4
View File
@@ -1,4 +1 @@
14 2048 0 12 2048000 0
40 2048 0
64 2048 0
87 2048 0
1 14 2048 0 12 2048000 0
40 2048 0
64 2048 0
87 2048 0
+1 -4
View File
@@ -1,4 +1 @@
9 2016 0 9 2048000 0
31 2016 0
53 2016 0
77 2016 0
1 9 2016 0 9 2048000 0
31 2016 0
53 2016 0
77 2016 0
+1 -4
View File
@@ -1,4 +1 @@
9 2016 0 8 2048000 0
33 2016 0
56 2016 0
80 2016 0
1 9 2016 0 8 2048000 0
33 2016 0
56 2016 0
80 2016 0
+1 -4
View File
@@ -1,4 +1 @@
9 2016 0 8 2048000 0
33 2016 0
54 2016 0
75 2016 0
1 9 2016 0 8 2048000 0
33 2016 0
54 2016 0
75 2016 0
+3 -2
View File
@@ -1,2 +1,3 @@
9 1984 0 8 2048000 0
33 2032 0 32 2048000 0
54 2048000 0
1 9 1984 0 8 2048000 0
2 33 2032 0 32 2048000 0
3 54 2048000 0
+2 -2
View File
@@ -1,2 +1,2 @@
9 2016 0 10 2048000 0
32 2016 0 32 2048000
1 9 2016 0 10 2048000 0
2 32 2016 0 32 2048000
+2 -2
View File
@@ -1,2 +1,2 @@
10 2016 0 10 2064384 0
34 2016 0 31 2064384
1 10 2016 0 10 2064384 0
2 34 2016 0 31 2064384
+2 -2
View File
@@ -1,2 +1,2 @@
9 2016 0 8 2048000 0
32 2016 0 28 0 0
1 9 2016 0 8 2048000 0
2 32 2016 0 28 0 0
+1 -1
View File
@@ -1 +1 @@
9 1440 0 8 212992 0
1 9 1440 0 8 212992 0
-1
View File
@@ -1 +0,0 @@
8 1472 0
1 8 1472 0
8 1472 0
-1
View File
@@ -1 +0,0 @@
8 1472 0
1 8 1472 0
8 1472 0
-1
View File
@@ -1 +0,0 @@
8 1472 0
1 8 1472 0
8 1472 0
+1 -1
View File
@@ -1 +1 @@
7 0 0 5 0 0
1 7 0 0 5 0 0
-1
View File
@@ -1 +0,0 @@
5 0 0
1 5 0 0
5 0 0
-1
View File
@@ -1 +0,0 @@
5 0 0
1 5 0 0
5 0 0
+6 -5
View File
@@ -1,5 +1,6 @@
12 2064 0 9 2080768 0
35 2064 0 46 2080768 0
58 2064 0 75 2080768 0
81 2064 0 100 2080768 0
104 2064 0 123 2080768 0
148 2080768 0
1 12 2064 0 9 2080768 0
2 35 2064 0 46 2080768 0
3 58 2064 0 75 2080768 0
4 81 2064 0 100 2080768 0
5 104 2064 0 123 2080768 0
6 148 2080768 0
+2 -2
View File
@@ -1,2 +1,2 @@
8 2032 0 11 2064384 0
35 2032 0 32 0 0
1 8 2032 0 11 2064384 0
2 35 2032 0 32 0 0
+2 -2
View File
@@ -1,2 +1,2 @@
9 2032 0 9 2080768 0
31 2032 0 34 2080768
1 9 2032 0 9 2080768 0
2 31 2032 0 34 2080768
+2 -2
View File
@@ -1,2 +1,2 @@
9 2032 0 8 2064384 0
33 2032 0 33 2064384
1 9 2032 0 8 2064384 0
2 33 2032 0 33 2064384
+1 -1
View File
@@ -1 +1 @@
11 2304 1 8 1556480 0
1 11 2304 1 8 1556480 0
+1 -1
View File
@@ -1 +1 @@
8 4064 5 0 0
1 8 4064 5 0 0
+1 -1
View File
@@ -1 +1 @@
8 4064 4 0 0
1 8 4064 4 0 0
+1 -1
View File
@@ -1 +1 @@
8 4064 5 0 0
1 8 4064 5 0 0
+1 -1
View File
@@ -1 +1 @@
9 480 0 9 376832 0
1 9 480 0 9 376832 0
+1 -1
View File
@@ -1 +1 @@
8 496 0 8 589824
1 8 496 0 8 589824
+1 -1
View File
@@ -1 +1 @@
9 496 0 8 507904
1 9 496 0 8 507904
+1 -1
View File
@@ -1 +1 @@
9 496 0 7 507904
1 9 496 0 7 507904
+2 -2
View File
@@ -1,2 +1,2 @@
11 5344 0 8 5226496 0
31 0 0 43 14336000
1 11 5344 0 8 5226496 0
2 31 0 0 43 14336000
+1 -1
View File
@@ -1 +1 @@
11 9312 0 13 11272192 0
1 11 9312 0 13 11272192 0
+1 -1
View File
@@ -1 +1 @@
11 9856 0 10 10240000 0
1 11 9856 0 10 10240000 0
+1 -1
View File
@@ -1 +1 @@
11 8752 0 11 10272768 0
1 11 8752 0 11 10272768 0
+17 -16
View File
@@ -1,16 +1,17 @@
14 1984 0 9 2015232 0
39 2064 0 31 2080768 0
65 2064 0 54 2080768 0
94 2064 0 79 2080768 0
117 2064 0 107 2080768 0
143 2064 0 134 2080768 0
165 2064 0 159 2080768 0
188 2064 0 182 2080768 0
214 2064 0 205 2080768 0
237 2064 0 227 2080768 0
261 2064 0 249 2080768 0
285 2064 0 273 2080768 0
306 2064 0 296 2080768 0
333 2064 0 324 2080768 0
356 2064 0 346 2080768 0
382 2064 0 371 2080768 0
395 2080768 0
1 14 1984 0 9 2015232 0
2 39 2064 0 31 2080768 0
3 65 2064 0 54 2080768 0
4 94 2064 0 79 2080768 0
5 117 2064 0 107 2080768 0
6 143 2064 0 134 2080768 0
7 165 2064 0 159 2080768 0
8 188 2064 0 182 2080768 0
9 214 2064 0 205 2080768 0
10 237 2064 0 227 2080768 0
11 261 2064 0 249 2080768 0
12 285 2064 0 273 2080768 0
13 306 2064 0 296 2080768 0
14 333 2064 0 324 2080768 0
15 356 2064 0 346 2080768 0
16 382 2064 0 371 2080768 0
17 395 2080768 0
+13 -13
View File
@@ -1,13 +1,13 @@
8 2048 0 18 2097152 0
31 2048 0 54 2097152 0
55 2048 0 93 2097152 1
81 2048 0 138 2097152 1
103 2048 0 172 2097152 1
129 2048 0 196 2097152 0
153 2048 0 219 2097152 0
178 2048 0 245 2097152 0
201 2048 0 268 2097152 0
224 2048 0 292 2097152 0
247 2048 0 315 2097152 0
270 2048 0 338 2097152 0
294 2048 0 363 2097152 0
1 8 2048 0 18 2097152 0
2 31 2048 0 54 2097152 0
3 55 2048 0 93 2097152 1
4 81 2048 0 138 2097152 1
5 103 2048 0 172 2097152 1
6 129 2048 0 196 2097152 0
7 153 2048 0 219 2097152 0
8 178 2048 0 245 2097152 0
9 201 2048 0 268 2097152 0
10 224 2048 0 292 2097152 0
11 247 2048 0 315 2097152 0
12 270 2048 0 338 2097152 0
13 294 2048 0 363 2097152 0
+14 -12
View File
@@ -1,12 +1,14 @@
9 2048 0 8 2080768 0
32 2048 0 31 2080768 0
55 2048 0 55 2080768 0
79 2048 0 78 2080768 0
102 2048 0 110 2080768 0
126 2048 0 145 2080768 0
149 2048 0 177 2080768 0
173 2048 0 212 2080768 0
200 2048 0 242 2080768 0
223 2048 0 265 2080768 0
248 2048 0 288 2080768 0
272 2048 0 311 2080768 0
335 2080768 0
359 2080768 0
1 9 2048 0 8 2080768 0
2 32 2048 0 31 2080768 0
3 55 2048 0 55 2080768 0
4 79 2048 0 78 2080768 0
5 102 2048 0 110 2080768 0
6 126 2048 0 145 2080768 0
7 149 2048 0 177 2080768 0
8 173 2048 0 212 2080768 0
9 200 2048 0 242 2080768 0
10 223 2048 0 265 2080768 0
11 248 2048 0 288 2080768 0
12 272 2048 0 311 2080768 0
13 335 2080768 0
14 359 2080768 0
+12 -12
View File
@@ -1,12 +1,12 @@
7 2048 0 10 2097152 0
29 2048 0 34 2097152 0
54 2048 0 58 2097152 0
79 2048 0 84 2097152 0
105 2048 0 107 2097152 0
128 2048 0 130 2097152 0
153 2048 0 153 2097152 0
176 2048 0 177 2097152 0
199 2048 0 201 2097152 0
222 2048 0 224 2097152 0
245 2048 0 246 2097152 0
269 2048 0 270 2097152 0
1 7 2048 0 10 2097152 0
2 29 2048 0 34 2097152 0
3 54 2048 0 58 2097152 0
4 79 2048 0 84 2097152 0
5 105 2048 0 107 2097152 0
6 128 2048 0 130 2097152 0
7 153 2048 0 153 2097152 0
8 176 2048 0 177 2097152 0
9 199 2048 0 201 2097152 0
10 222 2048 0 224 2097152 0
11 245 2048 0 246 2097152 0
12 269 2048 0 270 2097152 0
+5 -6
View File
@@ -1,6 +1,5 @@
11 1984 0 9 2015232 0
35 2096 0 32 2080768 0
60 2096 0 56 2080768 0
84 2096 0 78 2080768 0
109 2096 0 102 2080768 0
132 2096
1 11 1984 0 9 2015232 0
2 35 2096 0 32 2080768 0
3 60 2096 0 56 2080768 0
4 84 2096 0 78 2080768 0
5 109 2096 0 102 2080768 0
132 2096
+5 -6
View File
@@ -1,6 +1,5 @@
8 2064 0 9 2080768 0
32 2064 0 31 2080768 0
55 2064 0 57 2080768 0
79 2064 0 83 2080768 0
101 2064 0 105 2080768 0
125 2064
1 8 2064 0 9 2080768 0
2 32 2064 0 31 2080768 0
3 55 2064 0 57 2080768 0
4 79 2064 0 83 2080768 0
5 101 2064 0 105 2080768 0
125 2064
+5 -6
View File
@@ -1,6 +1,5 @@
7 2064 0 8 2080768 0
32 2064 0 31 2080768 0
56 2064 0 55 2080768 0
78 2064 0 77 2080768 0
102 2064 0 100 2080768 0
120 0 0
1 7 2064 0 8 2080768 0
2 32 2064 0 31 2080768 0
3 56 2064 0 55 2080768 0
4 78 2064 0 77 2080768 0
5 102 2064 0 100 2080768 0
120 0 0
+5 -6
View File
@@ -1,6 +1,5 @@
8 2048 0 10 2080768 0
33 2064 0 35 2080768 0
55 2064 0 58 2080768 0
79 2064 0 83 2080768 0
101 2064 0 107 2080768 0
122 2064 0
1 8 2048 0 10 2080768 0
2 33 2064 0 35 2080768 0
3 55 2064 0 58 2080768 0
4 79 2064 0 83 2080768 0
5 101 2064 0 107 2080768 0
122 2064 0
+1 -3
View File
@@ -1,3 +1 @@
9 1776 0 7 1556480
32 1776 8
53 0 0
1 9 1776 0 7 1556480
32 1776 8
53 0 0
+1 -2
View File
@@ -1,2 +1 @@
8 1792 0 6 0 0
32 1792 7
1 8 1792 0 6 0 0
32 1792 7
+1 -2
View File
@@ -1,2 +1 @@
9 1792 0 3 0 0
32 1792 0
1 9 1792 0 3 0 0
32 1792 0
+1 -2
View File
@@ -1,2 +1 @@
9 1792 0 5 0 0
32 1792 0
1 9 1792 0 5 0 0
32 1792 0
+1 -1
View File
@@ -1 +1 @@
8 1632 0 8 1884160
1 8 1632 0 8 1884160
-1
View File
@@ -1 +0,0 @@
6 0 0
1 6 0 0
6 0 0
-1
View File
@@ -1 +0,0 @@
5 0 0
1 5 0 0
5 0 0
-1
View File
@@ -1 +0,0 @@
6 0 0
1 6 0 0
6 0 0
+1 -2
View File
@@ -1,2 +1 @@
10 1520 0 8 753664 0
34 11872 0
1 10 1520 0 8 753664 0
34 11872 0
+1 -1
View File
@@ -1 +1 @@
7 10800 0 8 12025856 0
1 7 10800 0 8 12025856 0
+1 -1
View File
@@ -1 +1 @@
9 10800 1 7 12025856 0
1 9 10800 1 7 12025856 0
+1 -1
View File
@@ -1 +1 @@
8 10800 0 7 12025856 0
1 8 10800 0 7 12025856 0
+6 -5
View File
@@ -1,5 +1,6 @@
9 1984 0 8 2048000 0
33 2032 0 30 2048000 0
56 2032 0 53 2048000 0
80 2032 0 76 2048000 0
107 2032 0 99 2048000 0
123 2048000 0
1 9 1984 0 8 2048000 0
2 33 2032 0 30 2048000 0
3 56 2032 0 53 2048000 0
4 80 2032 0 76 2048000 0
5 107 2032 0 99 2048000 0
6 123 2048000 0
+2 -2
View File
@@ -1,2 +1,2 @@
8 2032 0 9 2048000 0
30 2032 0 32 2048000 0
1 8 2032 0 9 2048000 0
2 30 2032 0 32 2048000 0
+2 -2
View File
@@ -1,2 +1,2 @@
9 2016 0 8 2048000 0
36 2016 0 33 2048000
1 9 2016 0 8 2048000 0
2 36 2016 0 33 2048000
+2 -2
View File
@@ -1,2 +1,2 @@
9 2016 0 9 2048000 0
35 2016 0 33 2048000 0
1 9 2016 0 9 2048000 0
2 35 2016 0 33 2048000 0
+8 -25
View File
@@ -1,25 +1,8 @@
7 2048 0 8 2080768 0
32 2048 0 32 2080768 0
54 2048 0 54 2080768 0
77 2048 0 76 2080768 0
103 2048 0 101 2080768 0
127 2048 0 123 2080768 0
150 2048 0 148 2080768 0
178 2048 0 170 2080768 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
1 7 2048 0 8 2080768 0
2 32 2048 0 32 2080768 0
3 54 2048 0 54 2080768 0
4 77 2048 0 76 2080768 0
5 103 2048 0 101 2080768 0
6 127 2048 0 123 2080768 0
7 150 2048 0 148 2080768 0
8 178 2048 0 170 2080768 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
+3 -21
View File
@@ -1,21 +1,3 @@
8 2048 0 9 2080768 0
33 2048 0 34 2080768 0
65 2048 0 60 2080768 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
1 8 2048 0 9 2080768 0
2 33 2048 0 34 2080768 0
3 65 2048 0 60 2080768 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
+3 -22
View File
@@ -1,22 +1,3 @@
9 2048 0 8 2080768 0
32 2048 0 33 2080768 0
57 2048 0 57 2080768 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
1 9 2048 0 8 2080768 0
2 32 2048 0 33 2080768 0
3 57 2048 0 57 2080768 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
+3 -22
View File
@@ -1,22 +1,3 @@
9 2048 0 10 2080768 0
32 2048 0 35 2080768 0
55 2048 0 59 2080768 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
1 9 2048 0 10 2080768 0
2 32 2048 0 35 2080768 0
3 55 2048 0 59 2080768 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
+33 -34
View File
@@ -1,34 +1,33 @@
8 2048 0 8 2080768 0
32 2048 0 30 2080768 0
55 2048 0 54 2080768 0
77 2048 0 77 2080768 0
102 2048 0 101 2080768 0
124 2048 0 130 2080768 0
149 2048 0 154 2080768 0
171 2048 0 176 2080768 0
195 2048 0 201 2080768 0
219 2048 0 223 2080768 0
243 2048 0 245 2080768 0
268 2048 0 273 2080768 0
293 2048 0 295 2080768 0
317 2048 0 319 2080768 0
342 2048 0 342 2080768 0
366 2048 0 366 2080768 0
390 2048 0 387 2080768 0
413 2048 0 411 2080768 0
436 2048 0 434 2080768 0
464 2048 0 455 2080768 0
486 2048 0 478 2080768 0
506 2048 0 516 2080768 0
530 2048 0 593 1277952 0
553 2048 0 621 1277952 0
582 2048 0 658 1277952 0
605 2048 0 684 1277952 0
630 2048 0 708 1277952 0
652 2048 0 733 1277952 0
675 2048 0 755 1277952 0
699 2048 0 778 1277952 0
722 2048 0 832 1277952 0
753 2048 0 993 1277952 0
785 2048 0 1018 1261568 0
807 0 0
1 8 2048 0 8 2080768 0
2 32 2048 0 30 2080768 0
3 55 2048 0 54 2080768 0
4 77 2048 0 77 2080768 0
5 102 2048 0 101 2080768 0
6 124 2048 0 130 2080768 0
7 149 2048 0 154 2080768 0
8 171 2048 0 176 2080768 0
9 195 2048 0 201 2080768 0
10 219 2048 0 223 2080768 0
11 243 2048 0 245 2080768 0
12 268 2048 0 273 2080768 0
13 293 2048 0 295 2080768 0
14 317 2048 0 319 2080768 0
15 342 2048 0 342 2080768 0
16 366 2048 0 366 2080768 0
17 390 2048 0 387 2080768 0
18 413 2048 0 411 2080768 0
19 436 2048 0 434 2080768 0
20 464 2048 0 455 2080768 0
21 486 2048 0 478 2080768 0
22 506 2048 0 516 2080768 0
23 530 2048 0 593 1277952 0
24 553 2048 0 621 1277952 0
25 582 2048 0 658 1277952 0
26 605 2048 0 684 1277952 0
27 630 2048 0 708 1277952 0
28 652 2048 0 733 1277952 0
29 675 2048 0 755 1277952 0
30 699 2048 0 778 1277952 0
31 722 2048 0 832 1277952 0
32 753 2048 0 993 1277952 0
33 785 2048 0 1018 1261568 0
807 0 0
+7 -6
View File
@@ -1,6 +1,7 @@
8 2048 0 11 2097152 0
32 2048 0 48 2097152 0
58 2048 0 90 2097152 1
82 2048 0 160 2097152 1
110 2048 0 191 2031616 1
135 2048 0 218 2031616 0
248 2031616 0
1 8 2048 0 11 2097152 0
2 32 2048 0 48 2097152 0
3 58 2048 0 90 2097152 1
4 82 2048 0 160 2097152 1
5 110 2048 0 191 2031616 1
6 135 2048 0 218 2031616 0
7 248 2031616 0
+6 -6
View File
@@ -1,6 +1,6 @@
8 2048 0 8 2015232 0
33 2048 0 31 2080768 0
56 2048 0 58 2080768 0
81 2048 0 89 2080768 0
103 2048 0 115 2080768 0
128 2048 0 141 2080768 0
1 8 2048 0 8 2015232 0
2 33 2048 0 31 2080768 0
3 56 2048 0 58 2080768 0
4 81 2048 0 89 2080768 0
5 103 2048 0 115 2080768 0
6 128 2048 0 141 2080768 0
+6 -6
View File
@@ -1,6 +1,6 @@
8 2048 0 10 2080768 0
34 2048 0 34 2080768 0
61 2048 0 59 2080768 0
85 2048 0 83 2080768 0
107 2048 0 106 2080768 0
137 2048 0 131 2080768 0
1 8 2048 0 10 2080768 0
2 34 2048 0 34 2080768 0
3 61 2048 0 59 2080768 0
4 85 2048 0 83 2080768 0
5 107 2048 0 106 2080768 0
6 137 2048 0 131 2080768 0
+8 -3
View File
@@ -1,3 +1,8 @@
8 1968 0 18 2048000 0
34 2016 0 45 2048000 0
56 2016 0 70 2048000 0
98 2048000 0
122 2048000 0
144 2048000 0
167 2048000 0
194 2048000 0
1 8 1968 0 18 2048000 0
2 34 2016 0 45 2048000 0
3 56 2016 0 70 2048000 0
4 98 2048000 0
5 122 2048000 0
6 144 2048000 0
7 167 2048000 0
8 194 2048000 0
+2 -3
View File
@@ -1,3 +1,2 @@
8 2016 0 8 2048000 0
34 2016 0 33 2048000 0
59 2016
1 8 2016 0 8 2048000 0
2 34 2016 0 33 2048000 0
59 2016
+2 -3
View File
@@ -1,3 +1,2 @@
9 2016 0 8 2048000 0
35 2016 0 34 2048000 0
53 0 0
1 9 2016 0 8 2048000 0
2 35 2016 0 34 2048000 0
53 0 0
+2 -3
View File
@@ -1,3 +1,2 @@
10 2016 0 10 2048000 0
36 2016 0 38 2048000 0
59 0 0
1 10 2016 0 10 2048000 0
2 36 2016 0 38 2048000 0
59 0 0
+1 -4
View File
@@ -1,4 +1 @@
12 2080 0 8 2080768 0
39 2080 0
62 2080 0
81 0 0
1 12 2080 0 8 2080768 0
39 2080 0
62 2080 0
81 0 0
+1 -4
View File
@@ -1,4 +1 @@
9 2048 0 9 2080768
31 2048 0
57 2048 0
80 2048
1 9 2048 0 9 2080768
31 2048 0
57 2048 0
80 2048
+1 -4
View File
@@ -1,4 +1 @@
8 2048 0 8 2097152 0
32 2048 0
54 2048 0
76 2048
1 8 2048 0 8 2097152 0
32 2048 0
54 2048 0
76 2048
+1 -4
View File
@@ -1,4 +1 @@
8 2048 0 8 2080768
28 2048 0
50 2048 0
71 2048 0
1 8 2048 0 8 2080768
28 2048 0
50 2048 0
71 2048 0
+1 -1
View File
@@ -1 +1 @@
8 2128 0 5 0 0
1 8 2128 0 5 0 0
-1
View File
@@ -1 +0,0 @@
8 2384 0
1 8 2384 0
8 2384 0
-1
View File
@@ -1 +0,0 @@
8 2368 0
1 8 2368 0
8 2368 0
-1
View File
@@ -1 +0,0 @@
8 2368 0
1 8 2368 0
8 2368 0
+1 -1
View File
@@ -1 +1 @@
5 0 0 5 5308416 0
1 5 0 0 5 5308416 0
+1 -1
View File
@@ -1 +1 @@
6 0 0 7 0 0
1 6 0 0 7 0 0
-1
View File
@@ -1 +0,0 @@
6 0 0
1 6 0 0
6 0 0
+1 -1
View File
@@ -1 +1 @@
10 2288 0 7 0 0
1 10 2288 0 7 0 0
-1
View File
@@ -1 +0,0 @@
8 4096 0
1 8 4096 0
8 4096 0
-1
View File
@@ -1 +0,0 @@
8 4096 0
1 8 4096 0
8 4096 0
-1
View File
@@ -1 +0,0 @@
8 4176 1
1 8 4176 1
8 4176 1
+6 -6
View File
@@ -1,6 +1,6 @@
11 2032 0 8 2080768 0
98 2032 0 31 2080768 0
140 2032 0 52 2080768 0
163 2032 0 75 2080768 0
184 2032 0 97 2080768 0
206 2032 0 121 2080768 0
1 11 2032 0 8 2080768 0
2 98 2032 0 31 2080768 0
3 140 2032 0 52 2080768 0
4 163 2032 0 75 2080768 0
5 184 2032 0 97 2080768 0
6 206 2032 0 121 2080768 0
+3 -3
View File
@@ -1,3 +1,3 @@
8 2032 0 8 2080768 0
32 2032 0 32 2080768 0
55 2032 53 0 0
1 8 2032 0 8 2080768 0
2 32 2032 0 32 2080768 0
3 55 2032 53 0 0
+3 -3
View File
@@ -1,3 +1,3 @@
8 2032 0 12 2080768 0
28 2032 0 35 2080768 0
52 2032 0 61 2080768 0
1 8 2032 0 12 2080768 0
2 28 2032 0 35 2080768 0
3 52 2032 0 61 2080768 0
+3 -3
View File
@@ -1,3 +1,3 @@
8 2032 0 9 2080768 0
32 2032 0 35 2080768 0
53 2032 0 56 2080768 0
1 8 2032 0 9 2080768 0
2 32 2032 0 35 2080768 0
3 53 2032 0 56 2080768 0
+2 -9
View File
@@ -1,9 +1,2 @@
8 2016 0 8 2048000 0
36 2016 0 33 2048000 0
65 2016 0
89 2016 0
112 2016 0
135 2016 0
158 2016 0
183 2016 0
201 0 0
1 8 2016 0 8 2048000 0
2 36 2016 0 33 2048000 0
65 2016 0
89 2016 0
112 2016 0
135 2016 0
158 2016 0
183 2016 0
201 0 0
+2 -2
View File
@@ -1,2 +1,2 @@
8 2000 0 8 2048000 0
30 2000 0 31 2048000
1 8 2000 0 8 2048000 0
2 30 2000 0 31 2048000
+2 -2
View File
@@ -1,2 +1,2 @@
9 1984 0 11 2064384 0
32 2000 34 2064384
1 9 1984 0 11 2064384 0
2 32 2000 34 2064384
+2 -2
View File
@@ -1,2 +1,2 @@
8 2000 0 8 2048000 0
30 2000 0 31 2048000
1 8 2000 0 8 2048000 0
2 30 2000 0 31 2048000
+3 -3
View File
@@ -1,3 +1,3 @@
11 1968 0 8 2048000 0
37 2016 0 30 2048000 0
57 0 0 54 2048000 0
1 11 1968 0 8 2048000 0
2 37 2016 0 30 2048000 0
3 57 0 0 54 2048000 0
+2 -2
View File
@@ -1,2 +1,2 @@
9 2000 0 9 2048000 0
31 2000 32 2048000
1 9 2000 0 9 2048000 0
2 31 2000 32 2048000
+2 -2
View File
@@ -1,2 +1,2 @@
9 2000 0 11 2064384 0
32 2000 42 2064384
1 9 2000 0 11 2064384 0
2 32 2000 42 2064384

Some files were not shown because too many files have changed in this diff Show More