This repository was archived by the owner on Dec 24, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 616
Expand file tree
/
Copy pathMemoryProviderBenchmarks.cs
More file actions
152 lines (119 loc) · 6.37 KB
/
MemoryProviderBenchmarks.cs
File metadata and controls
152 lines (119 loc) · 6.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
using System;
using System.Globalization;
using BenchmarkDotNet.Attributes;
namespace ServiceStack.Text.Benchmarks
{
/*
Method | N | Mean | Error | StdDev |
-------------------- |------- |----------:|----------:|----------:|
DefaultParseBoolean | 1000 | 30.00 ns | 0.6018 ns | 0.5911 ns |
NetCoreParseBoolean | 1000 | 20.09 ns | 0.1783 ns | 0.1489 ns |
DefaulParseDecimal | 1000 | 54.57 ns | 1.3897 ns | 1.7067 ns |
NetCoreParseDecimal | 1000 | 189.92 ns | 3.3742 ns | 3.3139 ns |
DefaulParseFloat | 1000 | 117.37 ns | 0.9250 ns | 0.8652 ns |
NetCoreParseFloat | 1000 | 102.20 ns | 0.6069 ns | 0.5677 ns |
DefaulParseDouble | 1000 | 118.04 ns | 2.3821 ns | 2.3395 ns |
NetCoreParseDouble | 1000 | 101.87 ns | 1.1663 ns | 0.9739 ns |
DefaulParseInt32 | 1000 | 19.23 ns | 0.0790 ns | 0.0700 ns |
NetCoreParseInt32 | 1000 | 72.63 ns | 1.4722 ns | 1.8080 ns |
DefaulParseInt64 | 1000 | 18.35 ns | 0.1577 ns | 0.1231 ns |
NetCoreParseInt64 | 1000 | 69.79 ns | 0.5492 ns | 0.5138 ns |
DefaulParseUInt32 | 1000 | 18.66 ns | 0.1509 ns | 0.1260 ns |
NetCoreParseUInt32 | 1000 | 72.68 ns | 0.3446 ns | 0.3054 ns |
DefaultParseBoolean | 10000 | 28.35 ns | 0.1571 ns | 0.1470 ns |
NetCoreParseBoolean | 10000 | 19.39 ns | 0.0590 ns | 0.0552 ns |
DefaulParseDecimal | 10000 | 57.40 ns | 1.1499 ns | 1.8239 ns |
NetCoreParseDecimal | 10000 | 192.12 ns | 2.7811 ns | 2.6014 ns |
DefaulParseFloat | 10000 | 126.15 ns | 2.5386 ns | 4.2414 ns |
NetCoreParseFloat | 10000 | 106.11 ns | 1.6362 ns | 1.5305 ns |
DefaulParseDouble | 10000 | 122.10 ns | 1.9895 ns | 1.8610 ns |
NetCoreParseDouble | 10000 | 107.38 ns | 2.0829 ns | 1.9483 ns |
DefaulParseInt32 | 10000 | 19.97 ns | 0.3522 ns | 0.3122 ns |
NetCoreParseInt32 | 10000 | 72.41 ns | 0.8461 ns | 0.7500 ns |
DefaulParseInt64 | 10000 | 18.19 ns | 0.0536 ns | 0.0502 ns |
NetCoreParseInt64 | 10000 | 69.90 ns | 0.8358 ns | 0.6979 ns |
DefaulParseUInt32 | 10000 | 18.58 ns | 0.1056 ns | 0.0936 ns |
NetCoreParseUInt32 | 10000 | 72.05 ns | 0.3941 ns | 0.3291 ns |
DefaultParseBoolean | 100000 | 28.40 ns | 0.1632 ns | 0.1447 ns |
NetCoreParseBoolean | 100000 | 19.38 ns | 0.1022 ns | 0.0853 ns |
DefaulParseDecimal | 100000 | 51.66 ns | 0.2337 ns | 0.2071 ns |
NetCoreParseDecimal | 100000 | 185.71 ns | 1.0153 ns | 0.9000 ns |
DefaulParseFloat | 100000 | 119.73 ns | 2.4091 ns | 3.0467 ns |
NetCoreParseFloat | 100000 | 103.48 ns | 0.9406 ns | 0.8798 ns |
DefaulParseDouble | 100000 | 117.82 ns | 1.0134 ns | 0.9480 ns |
NetCoreParseDouble | 100000 | 102.38 ns | 0.3972 ns | 0.3316 ns |
DefaulParseInt32 | 100000 | 19.41 ns | 0.2591 ns | 0.2424 ns |
NetCoreParseInt32 | 100000 | 72.14 ns | 0.7835 ns | 0.7329 ns |
DefaulParseInt64 | 100000 | 18.33 ns | 0.1323 ns | 0.1237 ns |
NetCoreParseInt64 | 100000 | 70.20 ns | 0.5148 ns | 0.4815 ns |
DefaulParseUInt32 | 100000 | 19.11 ns | 0.4070 ns | 0.4180 ns |
NetCoreParseUInt32 | 100000 | 74.99 ns | 1.3515 ns | 1.1980 ns |
*/
public class MemoryProviderBenchmarks
{
[Params(100000)] public int N;
[Benchmark]
public bool DefaultParseBoolean() => DefaultMemory.Provider.ParseBoolean(bool.TrueString);
[Benchmark]
public bool NetCoreParseBoolean() => NetCoreMemory.Provider.ParseBoolean(bool.TrueString);
[Benchmark]
public decimal DefaulParseDecimal() => DefaultMemory.Provider.ParseDecimal("123456.123456");
[Benchmark]
public decimal NetCoreParseDecimal() => NetCoreMemory.Provider.ParseDecimal("123456.123456");
[Benchmark]
public float DefaulParseFloat() => DefaultMemory.Provider.ParseFloat("123456.123456");
[Benchmark]
public float NetCoreParseFloat() => NetCoreMemory.Provider.ParseFloat("123456.123456");
[Benchmark]
public double DefaulParseDouble() => DefaultMemory.Provider.ParseDouble("123456.123456");
[Benchmark]
public double NetCoreParseDouble() => NetCoreMemory.Provider.ParseDouble("123456.123456");
[Benchmark]
public int DefaulParseInt32() => DefaultMemory.Provider.ParseInt32("-123456789");
[Benchmark]
public int NetCoreParseInt32() => NetCoreMemory.Provider.ParseInt32("-123456789");
[Benchmark]
public long DefaulParseInt64() => DefaultMemory.Provider.ParseInt64("123456789");
[Benchmark]
public long NetCoreParseInt64() => NetCoreMemory.Provider.ParseInt64("123456789");
[Benchmark]
public uint DefaulParseUInt32() => DefaultMemory.Provider.ParseUInt32("123456789");
[Benchmark]
public uint NetCoreParseUInt32() => NetCoreMemory.Provider.ParseUInt32("123456789");
}
/*
Method | N | Mean | Error | StdDev |
-------------------- |------ |----------:|----------:|----------:|
NetCoreParseDecimal | 10000 | 192.23 ns | 3.8236 ns | 4.8357 ns |
CustomParseDecimal | 10000 | 45.22 ns | 0.4465 ns | 0.3728 ns |
*/
public class MemoryDecimalBenchmarks
{
[Params(10000)] public int N;
[Benchmark]
public decimal NetCoreParseDecimal() => decimal.Parse("123456.123456",
NumberStyles.Float | NumberStyles.AllowThousands, CultureInfo.InvariantCulture);
[Benchmark]
public decimal CustomParseDecimal() => DefaultMemory.Provider.ParseDecimal("123456.123456", allowThousands: true);
}
/*
Method | N | Mean | Error | StdDev | Median |
------------------ |------ |---------:|----------:|----------:|---------:|
NetCoreParseInt32 | 10000 | 58.28 ns | 0.5349 ns | 0.5004 ns | 58.19 ns |
NetCoreParseInt34 | 10000 | 59.95 ns | 1.2276 ns | 2.6425 ns | 58.93 ns |
CustomParseInt32 | 10000 | 12.11 ns | 0.2584 ns | 0.2417 ns | 12.05 ns |
CustomParseInt64 | 10000 | 11.28 ns | 0.0723 ns | 0.0564 ns | 11.27 ns |
*/
public class MemoryIntegerBenchmarks
{
[Params(10000)] public int N;
[Benchmark]
public int NetCoreParseInt32() => int.Parse("1234");
[Benchmark]
public long NetCoreParseInt34() => long.Parse("1234");
[Benchmark]
public int CustomParseInt32() => DefaultMemory.Provider.ParseInt32("1234".AsSpan());
[Benchmark]
public long CustomParseInt64() => DefaultMemory.Provider.ParseInt64("1234".AsSpan());
}
}