@@ -15,8 +15,54 @@ The version of StringBuilder built on an array of strings string[]: uses less me
15
15
16
16
## Benchmark:
17
17
18
+ <details >
19
+ <summary >ToString</summary >
20
+
18
21
``` C#
19
22
23
+ [IterationSetup ]
24
+ public void Setup ()
25
+ {
26
+ _str = new string ('S' , StrLength );
27
+ _sb = new System .Text .StringBuilder ();
28
+ for (int i = 0 ; i < 1000 ; i ++ )
29
+ {
30
+ _sb .AppendLine (_str );
31
+ }
32
+
33
+ _sbArr = new StringBuilderArray .StringBuilderArray ();
34
+ for (int i = 0 ; i < 1000 ; i ++ )
35
+ {
36
+ _sbArr .AppendLine (_str );
37
+ }
38
+ }
39
+
40
+ [Benchmark (Baseline = true , Description = " StringBuilder" )]
41
+ public void StringBuilder ()
42
+ {
43
+ _sb .ToString ();
44
+ }
45
+
46
+ [Benchmark (Description = " StringBuilderArray" )]
47
+ public void StringBuilderArray ()
48
+ {
49
+ _sbArr .ToString ();
50
+ }
51
+
52
+ ```
53
+ </details >
54
+ <br >
55
+ <details >
56
+ <summary >AppendLine</summary >
57
+
58
+ ``` C#
59
+
60
+ [IterationSetup ]
61
+ public void Setup ()
62
+ {
63
+ _str = new string ('S' , StrLength );
64
+ }
65
+
20
66
[Benchmark (Baseline = true , Description = " StringBuilder" )]
21
67
public void StringBuilder ()
22
68
{
@@ -25,8 +71,6 @@ The version of StringBuilder built on an array of strings string[]: uses less me
25
71
{
26
72
sb .AppendLine (_str );
27
73
}
28
-
29
- var result = sb .ToString ();
30
74
}
31
75
32
76
[Benchmark (Description = " StringBuilderArray" )]
@@ -37,53 +81,22 @@ The version of StringBuilder built on an array of strings string[]: uses less me
37
81
{
38
82
sb .AppendLine (_str );
39
83
}
40
-
41
- var result = sb .ToString ();
42
84
}
43
85
44
86
```
45
-
46
- | Method | StrLength | Mean | Ratio | Allocated | Alloc Ratio |
47
- | ------------------- | ---------- | --------------:| ------:| --------------:| ------------:|
48
- | ** StringBuilder** | ** 5** | ** 17.89 μs** | ** 1.00** | ** 30.98 KB** | ** 1.00** |
49
- | StringBuilderArray | 5 | 33.04 μs | 1.84 | 34.77 KB | 1.12 |
50
- | | | | | | |
51
- | ** StringBuilder** | ** 7** | ** 19.36 μs** | ** 1.00** | ** 50.59 KB** | ** 1.00** |
52
- | StringBuilderArray | 7 | 33.03 μs | 1.71 | 38.67 KB | 0.76 |
53
- | | | | | | |
54
- | ** StringBuilder** | ** 10** | ** 19.20 μs** | ** 1.00** | ** 56.45 KB** | ** 1.00** |
55
- | StringBuilderArray | 10 | 33.44 μs | 1.75 | 44.53 KB | 0.79 |
56
- | | | | | | |
57
- | ** StringBuilder** | ** 50** | ** 27.21 μs** | ** 1.00** | ** 206.36 KB** | ** 1.00** |
58
- | StringBuilderArray | 50 | 35.86 μs | 1.25 | 122.66 KB | 0.59 |
59
- | | | | | | |
60
- | ** StringBuilder** | ** 100** | ** 29.57 μs** | ** 1.00** | ** 413.8 KB** | ** 1.00** |
61
- | StringBuilderArray | 100 | 39.34 μs | 1.33 | 220.31 KB | 0.53 |
62
- | | | | | | |
63
- | ** StringBuilder** | ** 1000** | ** 701.28 μs** | ** 1.00** | ** 3935.53 KB** | ** 1.00** |
64
- | StringBuilderArray | 1000 | 587.01 μs | 0.89 | 1978.13 KB | 0.50 |
65
- | | | | | | |
66
- | ** StringBuilder** | ** 2500** | ** 1,840.94 μs** | ** 1.00** | ** 9804.08 KB** | ** 1.00** |
67
- | StringBuilderArray | 2500 | 1,374.07 μs | 0.75 | 4907.81 KB | 0.50 |
68
- | | | | | | |
69
- | ** StringBuilder** | ** 5000** | ** 5,041.05 μs** | ** 1.00** | ** 19583.76 KB** | ** 1.00** |
70
- | StringBuilderArray | 5000 | 2,795.59 μs | 0.56 | 9790.95 KB | 0.50 |
71
- | | | | | | |
72
- | ** StringBuilder** | ** 10000** | ** 9,842.60 μs** | ** 1.00** | ** 39162.77 KB** | ** 1.00** |
73
- | StringBuilderArray | 10000 | 5,271.43 μs | 0.53 | 19556.25 KB | 0.50 |
74
- | | | | | | |
75
- | ** StringBuilder** | ** 100000** | ** 54,744.65 μs** | ** 1.00** | ** 390802.46 KB** | ** 1.00** |
76
- | StringBuilderArray | 100000 | 20,572.29 μs | 0.38 | 195337.5 KB | 0.50 |
77
- | | | | | | |
78
- | ** StringBuilder** | ** 500000** | ** 213,324.82 μs** | ** 1.00** | ** 1953310.77 KB** | ** 1.00** |
79
- | StringBuilderArray | 500000 | 105,173.60 μs | 0.49 | 976587.5 KB | 0.50 |
80
- | | | | | | |
81
- | ** StringBuilder** | ** 1071741** | ** 289,821.51 μs** | ** 1.00** | ** 4186664.2 KB** | ** 1.00** |
82
- | StringBuilderArray | 1071741 | 153,198.15 μs | 0.53 | 2093269.14 KB | 0.50 |
83
-
84
- ## Reuse instance benchmark
87
+ </details >
88
+ <br >
89
+ <details >
90
+ <summary >AppendLine + Clear</summary >
91
+
85
92
``` C#
86
93
94
+ [IterationSetup ]
95
+ public void Setup ()
96
+ {
97
+ _str = new string ('S' , StrLength );
98
+ }
99
+
87
100
[Benchmark (Baseline = true , Description = " StringBuilder" )]
88
101
public void StringBuilder ()
89
102
{
@@ -98,8 +111,6 @@ The version of StringBuilder built on an array of strings string[]: uses less me
98
111
{
99
112
sb .AppendLine (_str );
100
113
}
101
-
102
- var result = sb .ToString ();
103
114
}
104
115
105
116
[Benchmark (Description = " StringBuilderArray" )]
@@ -116,54 +127,22 @@ The version of StringBuilder built on an array of strings string[]: uses less me
116
127
{
117
128
sb .AppendLine (_str );
118
129
}
119
-
120
- var result = sb .ToString ();
121
130
}
122
131
123
132
```
124
-
125
- | Method | StrLength | Mean | Ratio | Allocated | Alloc Ratio |
126
- | ------------------- | ---------- | --------------:| ------:| --------------:| ------------:|
127
- | ** StringBuilder** | ** 5** | ** 25.98 μs** | ** 1.00** | ** 47.01 KB** | ** 1.00** |
128
- | StringBuilderArray | 5 | 39.27 μs | 1.54 | 55.1 KB | 1.17 |
129
- | | | | | | |
130
- | ** StringBuilder** | ** 7** | ** 23.70 μs** | ** 1.00** | ** 71.7 KB** | ** 1.00** |
131
- | StringBuilderArray | 7 | 40.51 μs | 1.72 | 59.01 KB | 0.82 |
132
- | | | | | | |
133
- | ** StringBuilder** | ** 10** | ** 25.20 μs** | ** 1.00** | ** 84.59 KB** | ** 1.00** |
134
- | StringBuilderArray | 10 | 39.08 μs | 1.60 | 64.87 KB | 0.77 |
135
- | | | | | | |
136
- | ** StringBuilder** | ** 50** | ** 30.39 μs** | ** 1.00** | ** 309.51 KB** | ** 1.00** |
137
- | StringBuilderArray | 50 | 45.60 μs | 1.52 | 142.99 KB | 0.46 |
138
- | | | | | | |
139
- | ** StringBuilder** | ** 100** | ** 108.48 μs** | ** 1.00** | ** 626.33 KB** | ** 1.00** |
140
- | StringBuilderArray | 100 | 44.93 μs | 0.45 | 240.65 KB | 0.38 |
141
- | | | | | | |
142
- | ** StringBuilder** | ** 1000** | ** 1,179.51 μs** | ** 1.00** | ** 5904.3 KB** | ** 1.00** |
143
- | StringBuilderArray | 1000 | 570.91 μs | 0.49 | 1998.46 KB | 0.34 |
144
- | | | | | | |
145
- | ** StringBuilder** | ** 2500** | ** 3,970.17 μs** | ** 1.00** | ** 14698.94 KB** | ** 1.00** |
146
- | StringBuilderArray | 2500 | 1,516.39 μs | 0.38 | 4928.15 KB | 0.34 |
147
- | | | | | | |
148
- | ** StringBuilder** | ** 5000** | ** 8,286.17 μs** | ** 1.00** | ** 29353.62 KB** | ** 1.00** |
149
- | StringBuilderArray | 5000 | 2,903.21 μs | 0.35 | 9810.96 KB | 0.33 |
150
- | | | | | | |
151
- | ** StringBuilder** | ** 10000** | ** 13,094.03 μs** | ** 1.00** | ** 58702.15 KB** | ** 1.00** |
152
- | StringBuilderArray | 10000 | 5,196.08 μs | 0.40 | 19576.59 KB | 0.33 |
153
- | | | | | | |
154
- | ** StringBuilder** | ** 100000** | ** 66,915.82 μs** | ** 1.00** | ** 586134.84 KB** | ** 1.00** |
155
- | StringBuilderArray | 100000 | 20,600.99 μs | 0.31 | 195357.84 KB | 0.33 |
156
- | | | | | | |
157
- | ** StringBuilder** | ** 500000** | ** 284,550.02 μs** | ** 1.00** | ** 2930037.34 KB** | ** 1.00** |
158
- | StringBuilderArray | 500000 | 105,025.78 μs | 0.37 | 976607.84 KB | 0.33 |
159
- | | | | | | |
160
- | ** StringBuilder** | ** 1071741** | ** 370,070.86 μs** | ** 1.00** | ** 6280013.72 KB** | ** 1.00** |
161
- | StringBuilderArray | 1071741 | 153,051.83 μs | 0.41 | 2093289.48 KB | 0.33 |
162
-
163
- Insert benchmark
164
-
133
+ </details >
134
+ <br >
135
+ <details >
136
+ <summary >Insert</summary >
137
+
165
138
``` C#
166
139
140
+ [IterationSetup ]
141
+ public void Setup ()
142
+ {
143
+ _str = new string ('S' , StrLength );
144
+ }
145
+
167
146
[Benchmark (Baseline = true , Description = " StringBuilder" )]
168
147
public void StringBuilder ()
169
148
{
@@ -175,8 +154,10 @@ Insert benchmark
175
154
176
155
// before 1 str from end
177
156
sb .Insert (99 * _str .Length , _str );
157
+
178
158
// in start
179
159
sb .Insert (0 , _str );
160
+
180
161
// after 5 str from start
181
162
sb .Insert (5 * _str .Length , _str );
182
163
}
@@ -191,47 +172,13 @@ Insert benchmark
191
172
}
192
173
193
174
sb .Insert (0 , _str );
175
+
194
176
// in start
195
177
sb .Insert (100 , _str );
178
+
196
179
// after 5 str from start
197
180
sb .Insert (96 , _str );
198
181
}
199
182
200
183
```
201
- | Method | StrLength | Mean | Ratio | Allocated | Alloc Ratio |
202
- | ------------------- | ---------- | --------------:| ------:| -------------:| ------------:|
203
- | ** StringBuilder** | ** 5** | ** 2.064 μs** | ** 1.00** | ** 2.31 KB** | ** 1.00** |
204
- | StringBuilderArray | 5 | 3.800 μs | 1.79 | 2.04 KB | 0.88 |
205
- | | | | | | |
206
- | ** StringBuilder** | ** 7** | ** 2.075 μs** | ** 1.00** | ** 3.38 KB** | ** 1.00** |
207
- | StringBuilderArray | 7 | 3.878 μs | 1.88 | 2.04 KB | 0.60 |
208
- | | | | | | |
209
- | ** StringBuilder** | ** 10** | ** 2.071 μs** | ** 1.00** | ** 3.38 KB** | ** 1.00** |
210
- | StringBuilderArray | 10 | 3.872 μs | 1.90 | 2.04 KB | 0.60 |
211
- | | | | | | |
212
- | ** StringBuilder** | ** 50** | ** 2.738 μs** | ** 1.00** | ** 14.24 KB** | ** 1.00** |
213
- | StringBuilderArray | 50 | 3.935 μs | 1.47 | 2.04 KB | 0.14 |
214
- | | | | | | |
215
- | ** StringBuilder** | ** 100** | ** 3.129 μs** | ** 1.00** | ** 27.02 KB** | ** 1.00** |
216
- | StringBuilderArray | 100 | 3.930 μs | 1.26 | 2.04 KB | 0.08 |
217
- | | | | | | |
218
- | ** StringBuilder** | ** 1000** | ** 10.129 μs** | ** 1.00** | ** 210.98 KB** | ** 1.000** |
219
- | StringBuilderArray | 1000 | 3.872 μs | 0.41 | 2.04 KB | 0.010 |
220
- | | | | | | |
221
- | ** StringBuilder** | ** 2500** | ** 21.183 μs** | ** 1.00** | ** 506.12 KB** | ** 1.000** |
222
- | StringBuilderArray | 2500 | 3.920 μs | 0.19 | 2.04 KB | 0.004 |
223
- | | | | | | |
224
- | ** StringBuilder** | ** 5000** | ** 40.544 μs** | ** 1.00** | ** 1022.95 KB** | ** 1.000** |
225
- | StringBuilderArray | 5000 | 3.840 μs | 0.10 | 2.04 KB | 0.002 |
226
- | | | | | | |
227
- | ** StringBuilder** | ** 10000** | ** 71.205 μs** | ** 1.00** | ** 2019.62 KB** | ** 1.000** |
228
- | StringBuilderArray | 10000 | 3.931 μs | 0.06 | 2.04 KB | 0.001 |
229
- | | | | | | |
230
- | ** StringBuilder** | ** 100000** | ** 5,484.256 μs** | ** 1.000** | ** 20133.58 KB** | ** 1.000** |
231
- | StringBuilderArray | 100000 | 3.898 μs | 0.001 | 2.04 KB | 0.000 |
232
- | | | | | | |
233
- | ** StringBuilder** | ** 500000** | ** 13,426.100 μs** | ** 1.000** | ** 100610.3 KB** | ** 1.000** |
234
- | StringBuilderArray | 500000 | 4.041 μs | 0.000 | 2.04 KB | 0.000 |
235
- | | | | | | |
236
- | ** StringBuilder** | ** 1071741** | ** 15,779.680 μs** | ** 1.000** | ** 215621.21 KB** | ** 1.000** |
237
- | StringBuilderArray | 1071741 | 4.087 μs | 0.000 | 2.04 KB | 0.000 |
184
+ </details >
0 commit comments