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
😃