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:
+726
@@ -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
@@ -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
@@ -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
@@ -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 +0,0 @@
|
|||||||
5 0 0
|
|
||||||
|
|||||||
|
@@ -1 +0,0 @@
|
|||||||
5 0 0
|
|
||||||
|
|||||||
|
@@ -1,4 +1 @@
|
|||||||
14 2048 0
|
12 2048000 0
|
||||||
40 2048 0
|
|
||||||
64 2048 0
|
|
||||||
87 2048 0
|
|
||||||
|
|||||||
|
@@ -1,4 +1 @@
|
|||||||
9 2016 0
|
9 2048000 0
|
||||||
31 2016 0
|
|
||||||
53 2016 0
|
|
||||||
77 2016 0
|
|
||||||
|
|||||||
|
@@ -1,4 +1 @@
|
|||||||
9 2016 0
|
8 2048000 0
|
||||||
33 2016 0
|
|
||||||
56 2016 0
|
|
||||||
80 2016 0
|
|
||||||
|
|||||||
|
@@ -1,4 +1 @@
|
|||||||
9 2016 0
|
8 2048000 0
|
||||||
33 2016 0
|
|
||||||
54 2016 0
|
|
||||||
75 2016 0
|
|
||||||
|
|||||||
|
@@ -1,2 +1,3 @@
|
|||||||
9 1984 0
|
8 2048000 0
|
||||||
33 2032 0
|
32 2048000 0
|
||||||
|
54 2048000 0
|
||||||
|
|||||||
|
@@ -1,2 +1,2 @@
|
|||||||
9 2016 0
|
10 2048000 0
|
||||||
32 2016 0
|
32 2048000
|
||||||
|
|||||||
|
@@ -1,2 +1,2 @@
|
|||||||
10 2016 0
|
10 2064384 0
|
||||||
34 2016 0
|
31 2064384
|
||||||
|
|||||||
|
@@ -1,2 +1,2 @@
|
|||||||
9 2016 0
|
8 2048000 0
|
||||||
32 2016 0
|
28 0 0
|
||||||
|
|||||||
|
@@ -1 +1 @@
|
|||||||
9 1440 0
|
8 212992 0
|
||||||
|
|||||||
|
@@ -1 +0,0 @@
|
|||||||
8 1472 0
|
|
||||||
|
|||||||
|
@@ -1 +0,0 @@
|
|||||||
8 1472 0
|
|
||||||
|
|||||||
|
@@ -1 +0,0 @@
|
|||||||
8 1472 0
|
|
||||||
|
|||||||
|
@@ -1 +1 @@
|
|||||||
7 0 0
|
5 0 0
|
||||||
|
|||||||
|
@@ -1 +0,0 @@
|
|||||||
5 0 0
|
|
||||||
|
|||||||
|
@@ -1 +0,0 @@
|
|||||||
5 0 0
|
|
||||||
|
|||||||
|
@@ -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,2 +1,2 @@
|
|||||||
8 2032 0
|
11 2064384 0
|
||||||
35 2032 0
|
32 0 0
|
||||||
|
|||||||
|
@@ -1,2 +1,2 @@
|
|||||||
9 2032 0
|
9 2080768 0
|
||||||
31 2032 0
|
34 2080768
|
||||||
|
|||||||
|
@@ -1,2 +1,2 @@
|
|||||||
9 2032 0
|
8 2064384 0
|
||||||
33 2032 0
|
33 2064384
|
||||||
|
|||||||
|
@@ -1 +1 @@
|
|||||||
11 2304 1
|
8 1556480 0
|
||||||
|
|||||||
|
@@ -1 +1 @@
|
|||||||
8 4064
|
5 0 0
|
||||||
|
|||||||
|
@@ -1 +1 @@
|
|||||||
8 4064
|
4 0 0
|
||||||
|
|||||||
|
@@ -1 +1 @@
|
|||||||
8 4064
|
5 0 0
|
||||||
|
|||||||
|
@@ -1 +1 @@
|
|||||||
9 480 0
|
9 376832 0
|
||||||
|
|||||||
|
@@ -1 +1 @@
|
|||||||
8 496 0
|
8 589824
|
||||||
|
|||||||
|
@@ -1 +1 @@
|
|||||||
9 496 0
|
8 507904
|
||||||
|
|||||||
|
@@ -1 +1 @@
|
|||||||
9 496 0
|
7 507904
|
||||||
|
|||||||
|
@@ -1,2 +1,2 @@
|
|||||||
11 5344 0
|
8 5226496 0
|
||||||
31 0 0
|
43 14336000
|
||||||
|
|||||||
|
@@ -1 +1 @@
|
|||||||
11 9312 0
|
13 11272192 0
|
||||||
|
|||||||
|
@@ -1 +1 @@
|
|||||||
11 9856 0
|
10 10240000 0
|
||||||
|
|||||||
|
@@ -1 +1 @@
|
|||||||
11 8752 0
|
11 10272768 0
|
||||||
|
|||||||
|
+17
-16
@@ -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
|
||||||
|
|||||||
|
+13
-13
@@ -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
|
||||||
|
|||||||
|
+14
-12
@@ -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
|
||||||
|
|||||||
|
+12
-12
@@ -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,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,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,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,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,3 +1 @@
|
|||||||
9 1776 0
|
7 1556480
|
||||||
32 1776 8
|
|
||||||
53 0 0
|
|
||||||
|
|||||||
|
@@ -1,2 +1 @@
|
|||||||
8 1792 0
|
6 0 0
|
||||||
32 1792 7
|
|
||||||
|
|||||||
|
@@ -1,2 +1 @@
|
|||||||
9 1792 0
|
3 0 0
|
||||||
32 1792 0
|
|
||||||
|
|||||||
|
@@ -1,2 +1 @@
|
|||||||
9 1792 0
|
5 0 0
|
||||||
32 1792 0
|
|
||||||
|
|||||||
|
@@ -1 +1 @@
|
|||||||
8 1632 0
|
8 1884160
|
||||||
|
|||||||
|
@@ -1 +0,0 @@
|
|||||||
6 0 0
|
|
||||||
|
|||||||
|
@@ -1 +0,0 @@
|
|||||||
5 0 0
|
|
||||||
|
|||||||
|
@@ -1 +0,0 @@
|
|||||||
6 0 0
|
|
||||||
|
|||||||
|
@@ -1,2 +1 @@
|
|||||||
10 1520 0
|
8 753664 0
|
||||||
34 11872 0
|
|
||||||
|
|||||||
|
@@ -1 +1 @@
|
|||||||
7 10800 0
|
8 12025856 0
|
||||||
|
|||||||
|
@@ -1 +1 @@
|
|||||||
9 10800 1
|
7 12025856 0
|
||||||
|
|||||||
|
@@ -1 +1 @@
|
|||||||
8 10800 0
|
7 12025856 0
|
||||||
|
|||||||
|
@@ -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,2 +1,2 @@
|
|||||||
8 2032 0
|
9 2048000 0
|
||||||
30 2032 0
|
32 2048000 0
|
||||||
|
|||||||
|
@@ -1,2 +1,2 @@
|
|||||||
9 2016 0
|
8 2048000 0
|
||||||
36 2016 0
|
33 2048000
|
||||||
|
|||||||
|
@@ -1,2 +1,2 @@
|
|||||||
9 2016 0
|
9 2048000 0
|
||||||
35 2016 0
|
33 2048000 0
|
||||||
|
|||||||
|
@@ -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,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,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,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
|
|
||||||
|
|||||||
|
+33
-34
@@ -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,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,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,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,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,3 +1,2 @@
|
|||||||
8 2016 0
|
8 2048000 0
|
||||||
34 2016 0
|
33 2048000 0
|
||||||
59 2016
|
|
||||||
|
|||||||
|
@@ -1,3 +1,2 @@
|
|||||||
9 2016 0
|
8 2048000 0
|
||||||
35 2016 0
|
34 2048000 0
|
||||||
53 0 0
|
|
||||||
|
|||||||
|
@@ -1,3 +1,2 @@
|
|||||||
10 2016 0
|
10 2048000 0
|
||||||
36 2016 0
|
38 2048000 0
|
||||||
59 0 0
|
|
||||||
|
|||||||
|
@@ -1,4 +1 @@
|
|||||||
12 2080 0
|
8 2080768 0
|
||||||
39 2080 0
|
|
||||||
62 2080 0
|
|
||||||
81 0 0
|
|
||||||
|
|||||||
|
@@ -1,4 +1 @@
|
|||||||
9 2048 0
|
9 2080768
|
||||||
31 2048 0
|
|
||||||
57 2048 0
|
|
||||||
80 2048
|
|
||||||
|
|||||||
|
@@ -1,4 +1 @@
|
|||||||
8 2048 0
|
8 2097152 0
|
||||||
32 2048 0
|
|
||||||
54 2048 0
|
|
||||||
76 2048
|
|
||||||
|
|||||||
|
@@ -1,4 +1 @@
|
|||||||
8 2048 0
|
8 2080768
|
||||||
28 2048 0
|
|
||||||
50 2048 0
|
|
||||||
71 2048 0
|
|
||||||
|
|||||||
|
@@ -1 +1 @@
|
|||||||
8 2128 0
|
5 0 0
|
||||||
|
|||||||
|
@@ -1 +0,0 @@
|
|||||||
8 2384 0
|
|
||||||
|
|||||||
|
@@ -1 +0,0 @@
|
|||||||
8 2368 0
|
|
||||||
|
|||||||
|
@@ -1 +0,0 @@
|
|||||||
8 2368 0
|
|
||||||
|
|||||||
|
@@ -1 +1 @@
|
|||||||
5 0 0
|
5 5308416 0
|
||||||
|
|||||||
|
@@ -1 +1 @@
|
|||||||
6 0 0
|
7 0 0
|
||||||
|
|||||||
|
@@ -1 +0,0 @@
|
|||||||
6 0 0
|
|
||||||
|
|||||||
|
@@ -1 +1 @@
|
|||||||
10 2288 0
|
7 0 0
|
||||||
|
|||||||
|
@@ -1 +0,0 @@
|
|||||||
8 4096 0
|
|
||||||
|
|||||||
|
@@ -1 +0,0 @@
|
|||||||
8 4096 0
|
|
||||||
|
|||||||
|
@@ -1 +0,0 @@
|
|||||||
8 4176 1
|
|
||||||
|
|||||||
|
@@ -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,3 +1,3 @@
|
|||||||
8 2032 0
|
8 2080768 0
|
||||||
32 2032 0
|
32 2080768 0
|
||||||
55 2032
|
53 0 0
|
||||||
|
|||||||
|
@@ -1,3 +1,3 @@
|
|||||||
8 2032 0
|
12 2080768 0
|
||||||
28 2032 0
|
35 2080768 0
|
||||||
52 2032 0
|
61 2080768 0
|
||||||
|
|||||||
|
@@ -1,3 +1,3 @@
|
|||||||
8 2032 0
|
9 2080768 0
|
||||||
32 2032 0
|
35 2080768 0
|
||||||
53 2032 0
|
56 2080768 0
|
||||||
|
|||||||
|
@@ -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,2 +1,2 @@
|
|||||||
8 2000 0
|
8 2048000 0
|
||||||
30 2000 0
|
31 2048000
|
||||||
|
|||||||
|
@@ -1,2 +1,2 @@
|
|||||||
9 1984 0
|
11 2064384 0
|
||||||
32 2000
|
34 2064384
|
||||||
|
|||||||
|
@@ -1,2 +1,2 @@
|
|||||||
8 2000 0
|
8 2048000 0
|
||||||
30 2000 0
|
31 2048000
|
||||||
|
|||||||
|
@@ -1,3 +1,3 @@
|
|||||||
11 1968 0
|
8 2048000 0
|
||||||
37 2016 0
|
30 2048000 0
|
||||||
57 0 0
|
54 2048000 0
|
||||||
|
|||||||
|
@@ -1,2 +1,2 @@
|
|||||||
9 2000 0
|
9 2048000 0
|
||||||
31 2000
|
32 2048000
|
||||||
|
|||||||
|
@@ -1,2 +1,2 @@
|
|||||||
9 2000 0
|
11 2064384 0
|
||||||
32 2000
|
42 2064384
|
||||||
|
|||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user