Skip to content

Commit bacad8a

Browse files
author
Petr Sramek
committed
added benchmark comparison
1 parent 35869c2 commit bacad8a

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

README.md

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,87 @@ There may be a scenario you need to pass and return different types to and from
9393
string polyline = encoding.Encode(coordinates);
9494
```
9595

96+
### Performance
97+
98+
#### Decode
99+
100+
```
101+
102+
BenchmarkDotNet v0.14.0, Windows 11 (10.0.26100.2894)
103+
Apple Silicon, 4 CPU, 4 logical and 4 physical cores
104+
.NET SDK 9.0.102
105+
[Host] : .NET 9.0.1 (9.0.124.61010), Arm64 RyuJIT AdvSIMD
106+
Job-CJKHIS : .NET 5.0.17 (5.0.1722.21314), Arm64 RyuJIT AdvSIMD
107+
Job-GAHPKM : .NET 6.0.36 (6.0.3624.51421), Arm64 RyuJIT AdvSIMD
108+
Job-KWIIGA : .NET 7.0.20 (7.0.2024.26716), Arm64 RyuJIT AdvSIMD
109+
Job-ZMWUEM : .NET 8.0.12 (8.0.1224.60305), Arm64 RyuJIT AdvSIMD
110+
Job-EQIHVN : .NET 9.0.1 (9.0.124.61010), Arm64 RyuJIT AdvSIMD
111+
112+
113+
```
114+
| Method | Runtime | Mean | Error | StdDev | Ratio | RatioSD | Rank | Gen0 | Gen1 | Allocated | Alloc Ratio |
115+
|---------------------------------- |--------- |-----------:|---------:|---------:|------:|--------:|-----:|-------:|-------:|----------:|------------:|
116+
| **Cloudikka_PolylineEncoding_Decode** | **.NET 5.0** | **1,768.2 ns** | **7.36 ns** | **6.88 ns** | **1.29** | **0.01** | **3** | **0.4959** | **0.0019** | **3120 B** | **3.82** |
117+
| **PolylineDecoder_Decode** | **.NET 5.0** | **1,367.1 ns** | **7.91 ns** | **6.61 ns** | **1.00** | **0.01** | **2** | **0.1297** | **-** | **816 B** | **1.00** |
118+
| **Polyliner_Decode** | **.NET 5.0** | **1,218.0 ns** | **3.79 ns** | **3.17 ns** | **0.89** | **0.00** | **1** | **0.5169** | **0.0057** | **3248 B** | **3.98** |
119+
| | | | | | | | | | | | |
120+
| **Cloudikka_PolylineEncoding_Decode** | **.NET 6.0** | **1,763.8 ns** | **4.51 ns** | **4.00 ns** | **1.38** | **0.01** | **3** | **0.4959** | **0.0019** | **3120 B** | **3.82** |
121+
| **PolylineDecoder_Decode** | **.NET 6.0** | **1,277.5 ns** | **4.43 ns** | **4.14 ns** | **1.00** | **0.00** | **2** | **0.1297** | **-** | **816 B** | **1.00** |
122+
| **Polyliner_Decode** | **.NET 6.0** | **837.2 ns** | **2.49 ns** | **2.21 ns** | **0.66** | **0.00** | **1** | **0.5169** | **0.0057** | **3248 B** | **3.98** |
123+
| | | | | | | | | | | | |
124+
| **Cloudikka_PolylineEncoding_Decode** | **.NET 7.0** | **1,387.6 ns** | **24.18 ns** | **22.62 ns** | **1.12** | **0.02** | **2** | **1.4915** | **-** | **3120 B** | **3.82** |
125+
| **PolylineDecoder_Decode** | **.NET 7.0** | **1,237.5 ns** | **3.05 ns** | **2.86 ns** | **1.00** | **0.00** | **1** | **0.3891** | **-** | **816 B** | **1.00** |
126+
| **Polyliner_Decode** | **.NET 7.0** | **1,230.6 ns** | **2.08 ns** | **1.84 ns** | **0.99** | **0.00** | **1** | **1.5526** | **-** | **3248 B** | **3.98** |
127+
| | | | | | | | | | | | |
128+
| **Cloudikka_PolylineEncoding_Decode** | **.NET 8.0** | **766.0 ns** | **3.39 ns** | **3.17 ns** | **1.49** | **0.01** | **3** | **1.4915** | **-** | **3120 B** | **3.82** |
129+
| **PolylineDecoder_Decode** | **.NET 8.0** | **513.9 ns** | **1.21 ns** | **1.14 ns** | **1.00** | **0.00** | **1** | **0.3901** | **-** | **816 B** | **1.00** |
130+
| **Polyliner_Decode** | **.NET 8.0** | **704.4 ns** | **1.38 ns** | **1.29 ns** | **1.37** | **0.00** | **2** | **1.5526** | **-** | **3248 B** | **3.98** |
131+
| | | | | | | | | | | | |
132+
| **Cloudikka_PolylineEncoding_Decode** | **.NET 9.0** | **782.5 ns** | **1.50 ns** | **1.33 ns** | **1.57** | **0.00** | **3** | **1.4915** | **-** | **3120 B** | **3.82** |
133+
| **PolylineDecoder_Decode** | **.NET 9.0** | **498.7 ns** | **1.27 ns** | **1.19 ns** | **1.00** | **0.00** | **1** | **0.3901** | **-** | **816 B** | **1.00** |
134+
| **Polyliner_Decode** | **.NET 9.0** | **705.2 ns** | **1.30 ns** | **1.15 ns** | **1.41** | **0.00** | **2** | **1.5526** | **-** | **3248 B** | **3.98** |
135+
136+
137+
#### Encode
138+
139+
```
140+
141+
BenchmarkDotNet v0.14.0, Windows 11 (10.0.26100.2894)
142+
Apple Silicon, 4 CPU, 4 logical and 4 physical cores
143+
.NET SDK 9.0.102
144+
[Host] : .NET 9.0.1 (9.0.124.61010), Arm64 RyuJIT AdvSIMD
145+
Job-CJKHIS : .NET 5.0.17 (5.0.1722.21314), Arm64 RyuJIT AdvSIMD
146+
Job-GAHPKM : .NET 6.0.36 (6.0.3624.51421), Arm64 RyuJIT AdvSIMD
147+
Job-KWIIGA : .NET 7.0.20 (7.0.2024.26716), Arm64 RyuJIT AdvSIMD
148+
Job-ZMWUEM : .NET 8.0.12 (8.0.1224.60305), Arm64 RyuJIT AdvSIMD
149+
Job-EQIHVN : .NET 9.0.1 (9.0.124.61010), Arm64 RyuJIT AdvSIMD
150+
151+
152+
```
153+
| Method | Runtime | Mean | Error | StdDev | Ratio | RatioSD | Rank | Gen0 | Gen1 | Allocated | Alloc Ratio |
154+
|---------------------------------- |--------- |-----------:|---------:|---------:|------:|--------:|-----:|-------:|-------:|----------:|------------:|
155+
| **Cloudikka_PolylineEncoding_Encode** | **.NET 5.0** | **8,936.5 ns** | **26.81 ns** | **25.07 ns** | **8.18** | **0.04** | **3** | **2.2583** | **-** | **13.91 KB** | **7.95** |
156+
| **PolylineEncoder_Encode** | **.NET 5.0** | **1,092.4 ns** | **4.73 ns** | **4.42 ns** | **1.00** | **0.01** | **1** | **0.2842** | **-** | **1.75 KB** | **1.00** |
157+
| **Polyliner_Encode** | **.NET 5.0** | **1,291.0 ns** | **4.05 ns** | **3.16 ns** | **1.18** | **0.01** | **2** | **0.3643** | **0.0019** | **2.23 KB** | **1.28** |
158+
| | | | | | | | | | | | |
159+
| **Cloudikka_PolylineEncoding_Encode** | **.NET 6.0** | **7,640.7 ns** | **21.80 ns** | **20.39 ns** | **7.56** | **0.04** | **3** | **2.2583** | **-** | **13.91 KB** | **7.95** |
160+
| **PolylineEncoder_Encode** | **.NET 6.0** | **1,011.3 ns** | **4.33 ns** | **4.05 ns** | **1.00** | **0.01** | **1** | **0.2842** | **-** | **1.75 KB** | **1.00** |
161+
| **Polyliner_Encode** | **.NET 6.0** | **1,080.0 ns** | **3.35 ns** | **3.13 ns** | **1.07** | **0.01** | **2** | **0.3643** | **0.0019** | **2.23 KB** | **1.28** |
162+
| | | | | | | | | | | | |
163+
| **Cloudikka_PolylineEncoding_Encode** | **.NET 7.0** | **6,718.0 ns** | **13.77 ns** | **12.88 ns** | **6.65** | **0.02** | **3** | **6.8054** | **-** | **13.91 KB** | **7.95** |
164+
| **PolylineEncoder_Encode** | **.NET 7.0** | **1,010.1 ns** | **3.32 ns** | **3.11 ns** | **1.00** | **0.00** | **1** | **0.8564** | **-** | **1.75 KB** | **1.00** |
165+
| **Polyliner_Encode** | **.NET 7.0** | **1,075.9 ns** | **3.27 ns** | **2.73 ns** | **1.07** | **0.00** | **2** | **1.0929** | **-** | **2.23 KB** | **1.28** |
166+
| | | | | | | | | | | | |
167+
| **Cloudikka_PolylineEncoding_Encode** | **.NET 8.0** | **4,969.5 ns** | **9.29 ns** | **8.24 ns** | **9.53** | **0.03** | **3** | **6.8054** | **-** | **13.91 KB** | **7.95** |
168+
| **PolylineEncoder_Encode** | **.NET 8.0** | **521.4 ns** | **1.37 ns** | **1.28 ns** | **1.00** | **0.00** | **1** | **0.8564** | **-** | **1.75 KB** | **1.00** |
169+
| **Polyliner_Encode** | **.NET 8.0** | **1,020.7 ns** | **2.90 ns** | **2.57 ns** | **1.96** | **0.01** | **2** | **1.0929** | **-** | **2.23 KB** | **1.28** |
170+
| | | | | | | | | | | | |
171+
| **Cloudikka_PolylineEncoding_Encode** | **.NET 9.0** | **3,809.8 ns** | **27.85 ns** | **26.06 ns** | **7.21** | **0.05** | **3** | **4.3335** | **-** | **8.86 KB** | **5.06** |
172+
| **PolylineEncoder_Encode** | **.NET 9.0** | **528.2 ns** | **1.85 ns** | **1.73 ns** | **1.00** | **0.00** | **1** | **0.8564** | **-** | **1.75 KB** | **1.00** |
173+
| **Polyliner_Encode** | **.NET 9.0** | **1,033.9 ns** | **6.30 ns** | **5.89 ns** | **1.96** | **0.01** | **2** | **1.0929** | **-** | **2.23 KB** | **1.28** |
174+
175+
176+
96177
### Documentation
97178

98179
Documentation is can be found at https://dropoutcoder.github.io/polyline-algorithm-csharp/api/index.html.

0 commit comments

Comments
 (0)