⚡Testing performance on .NET
This project aims to test some aspects of most used features in .NET and C#, such as strings, iterations, serializations, etc.
BenchmarkDotNet=v0.13.1, OS=Windows 10.0.22616
Intel Core i5-8250U CPU 1.60GHz (Kaby Lake R), 1 CPU, 8 logical and 4 physical cores
.NET SDK=6.0.300
[Host] : .NET 6.0.5 (6.0.522.21309), X64 RyuJIT
DefaultJob : .NET 6.0.5 (6.0.522.21309), X64 RyuJIT
Method |
ByteArraySize |
Mean |
Error |
StdDev |
Median |
Sha256 |
1000 |
9.607 μs |
1.3063 μs |
3.8518 μs |
12.250 μs |
Md5 |
1000 |
2.256 μs |
0.0252 μs |
0.0223 μs |
2.250 μs |
Sha256 |
10000 |
96.301 μs |
12.3469 μs |
36.4051 μs |
116.123 μs |
Md5 |
10000 |
20.502 μs |
0.1869 μs |
0.1657 μs |
20.444 μs |
Method |
Mean |
Error |
StdDev |
Median |
JsonSerializerDeserialize |
947.0 ns |
103.9 ns |
306.4 ns |
1,072.6 ns |
NewtonsoftJsonDeserialize |
32,968.8 ns |
2,650.5 ns |
7,519.1 ns |
31,100.0 ns |
Method |
size |
Mean |
Error |
StdDev |
Median |
ForArray |
1000 |
1,280.0 ns |
143.18 ns |
422.18 ns |
1,489.4 ns |
ForeachArray |
1000 |
868.9 ns |
111.77 ns |
329.55 ns |
1,063.6 ns |
ForeachIEnumerable |
1000 |
14,843.6 ns |
1,647.84 ns |
4,858.71 ns |
17,164.3 ns |
ForeachList |
1000 |
2,916.4 ns |
381.80 ns |
1,125.74 ns |
3,504.2 ns |
ForList |
1000 |
692.7 ns |
11.35 ns |
10.06 ns |
689.9 ns |
ForArray |
10000 |
10,303.5 ns |
1,424.66 ns |
4,200.64 ns |
6,838.1 ns |
ForeachArray |
10000 |
4,465.2 ns |
84.00 ns |
74.46 ns |
4,432.2 ns |
ForeachIEnumerable |
10000 |
119,238.6 ns |
17,432.41 ns |
51,399.86 ns |
90,412.1 ns |
ForeachList |
10000 |
27,568.3 ns |
4,209.92 ns |
12,413.04 ns |
28,291.6 ns |
ForList |
10000 |
12,643.5 ns |
1,680.58 ns |
4,955.22 ns |
16,449.0 ns |
Method |
Mean |
Error |
StdDev |
Median |
EqualityWithToLower |
58.05 ns |
8.259 ns |
24.352 ns |
42.576 ns |
EqualityWithToUpper |
53.49 ns |
7.740 ns |
22.820 ns |
37.118 ns |
CompareWithIgnoreCase |
19.47 ns |
0.378 ns |
0.388 ns |
19.345 ns |
EqualsIgnoreCase |
13.72 ns |
2.323 ns |
6.849 ns |
8.637 ns |
Method |
Mean |
Error |
StdDev |
Median |
Format |
78.44 ns |
1.579 ns |
1.551 ns |
78.12 ns |
Concat |
45.88 ns |
6.374 ns |
18.793 ns |
40.66 ns |
Interpolation |
45.04 ns |
7.037 ns |
20.749 ns |
31.71 ns |
StringBuilder |
71.95 ns |
10.842 ns |
31.967 ns |
84.46 ns |
Method |
Length |
Mean |
Error |
StdDev |
Median |
CastWithParse |
1000 |
25.20 μs |
3.494 μs |
10.302 μs |
25.55 μs |
CastWithConvert |
1000 |
23.78 μs |
3.284 μs |
9.683 μs |
20.17 μs |
CastWithTryParse |
1000 |
22.31 μs |
3.110 μs |
9.169 μs |
16.24 μs |
CastWithParse |
10000 |
228.18 μs |
31.921 μs |
94.121 μs |
158.12 μs |
CastWithConvert |
10000 |
145.90 μs |
2.831 μs |
2.649 μs |
145.37 μs |
CastWithTryParse |
10000 |
147.93 μs |
1.254 μs |
0.979 μs |
147.63 μs |
- Clone this repository
git clone https://github.com/pferreirafabricio/dotnet-performance.git
;
- Enter in the project's folder:
cd dotnet-performance
- Enter in the solution:
cd PerformanceTests
- Change in the
Program.cs
file to use the class you want to test
- Finally run
dotnet run --configuration Release
😃
🧱 This project was built with: