@@ -15,8 +15,54 @@ The version of StringBuilder built on an array of strings string[]: uses less me
1515
1616## Benchmark:
1717
18+ <details >
19+ <summary >ToString</summary >
20+
1821``` C#
1922
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+
2066 [Benchmark (Baseline = true , Description = " StringBuilder" )]
2167 public void StringBuilder ()
2268 {
@@ -25,8 +71,6 @@ The version of StringBuilder built on an array of strings string[]: uses less me
2571 {
2672 sb .AppendLine (_str );
2773 }
28-
29- var result = sb .ToString ();
3074 }
3175
3276 [Benchmark (Description = " StringBuilderArray" )]
@@ -37,53 +81,22 @@ The version of StringBuilder built on an array of strings string[]: uses less me
3781 {
3882 sb .AppendLine (_str );
3983 }
40-
41- var result = sb .ToString ();
4284 }
4385
4486```
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+
8592``` C#
8693
94+ [IterationSetup ]
95+ public void Setup ()
96+ {
97+ _str = new string ('S' , StrLength );
98+ }
99+
87100 [Benchmark (Baseline = true , Description = " StringBuilder" )]
88101 public void StringBuilder ()
89102 {
@@ -98,8 +111,6 @@ The version of StringBuilder built on an array of strings string[]: uses less me
98111 {
99112 sb .AppendLine (_str );
100113 }
101-
102- var result = sb .ToString ();
103114 }
104115
105116 [Benchmark (Description = " StringBuilderArray" )]
@@ -116,54 +127,22 @@ The version of StringBuilder built on an array of strings string[]: uses less me
116127 {
117128 sb .AppendLine (_str );
118129 }
119-
120- var result = sb .ToString ();
121130 }
122131
123132```
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+
165138``` C#
166139
140+ [IterationSetup ]
141+ public void Setup ()
142+ {
143+ _str = new string ('S' , StrLength );
144+ }
145+
167146 [Benchmark (Baseline = true , Description = " StringBuilder" )]
168147 public void StringBuilder ()
169148 {
@@ -175,8 +154,10 @@ Insert benchmark
175154
176155 // before 1 str from end
177156 sb .Insert (99 * _str .Length , _str );
157+
178158 // in start
179159 sb .Insert (0 , _str );
160+
180161 // after 5 str from start
181162 sb .Insert (5 * _str .Length , _str );
182163 }
@@ -191,47 +172,13 @@ Insert benchmark
191172 }
192173
193174 sb .Insert (0 , _str );
175+
194176 // in start
195177 sb .Insert (100 , _str );
178+
196179 // after 5 str from start
197180 sb .Insert (96 , _str );
198181 }
199182
200183```
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