Repository navigation
Expand file tree
/
Copy pathKnownValueTypeBenchmark.cs
More file actions
109 lines (94 loc) · 2.79 KB
/
Copy pathKnownValueTypeBenchmark.cs
File metadata and controls
109 lines (94 loc) · 2.79 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
using BenchmarkDotNet.Attributes;
namespace LinkDotNet.StringBuilder.Benchmarks;
using SystemStringBuilder = System.Text.StringBuilder;
[MemoryDiagnoser]
public class KnownValueTypeBenchmark
{
private static readonly int[] Numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
private static readonly string Padding = new('0', 500);
[Benchmark]
public string StringBuilderConcat()
{
var sb = new SystemStringBuilder();
sb.Append("Hello World. How are you? What's going on?");
sb.Append(2000);
sb.Append(2d);
sb.Append(DateTime.Now);
sb.Append(1f / 3f);
return sb.ToString();
}
[Benchmark]
public string StringBuilderAppendJoin()
{
var sb = new SystemStringBuilder();
for (var i = 0; i < Numbers.Length; i++)
{
if (i > 0)
{
sb.Append(',');
}
sb.Append(Numbers[i]);
}
return sb.ToString();
}
[Benchmark]
public string StringBuilderInterpolated()
{
var sb = new SystemStringBuilder();
sb.Append($"{1},{2.5},{true},{DateTime.UnixEpoch},{Guid.Empty}");
return sb.ToString();
}
[Benchmark]
public string StringBuilderReplace()
{
var sb = new SystemStringBuilder();
sb.Append("{0}");
sb.Replace("{0}", 12345.ToString());
return sb.ToString();
}
[Benchmark]
public string StringBuilderTrim()
{
var sb = new SystemStringBuilder();
sb.Append(Padding);
sb.Append("hello world");
sb.Append(Padding);
var s = sb.ToString().Trim('0');
return s;
}
[Benchmark]
public string ValueStringBuilderConcat()
=> ValueStringBuilder.Concat("Hello World. How are you? What's going on?", 2000, 2d, DateTime.Now, 1f / 3f);
[Benchmark]
public string ValueStringBuilderAppendJoin()
{
using var builder = new ValueStringBuilder();
builder.AppendJoin(',', Numbers);
return builder.ToString();
}
[Benchmark]
public string ValueStringBuilderInterpolated()
{
using var builder = new ValueStringBuilder();
builder.Append($"{1},{2.5},{true},{DateTime.UnixEpoch},{Guid.Empty}");
return builder.ToString();
}
[Benchmark]
public string ValueStringBuilderReplace()
{
using var builder = new ValueStringBuilder();
builder.Append("{0}");
builder.ReplaceGeneric("{0}", 12345);
return builder.ToString();
}
[Benchmark]
public string ValueStringBuilderTrim()
{
using var builder = new ValueStringBuilder();
builder.Append(Padding);
builder.Append("hello world");
builder.Append(Padding);
builder.Trim('0');
return builder.ToString();
}
}