Skip to content

Commit 81c55a1

Browse files
Update README.md
1 parent fe53200 commit 81c55a1

File tree

1 file changed

+73
-126
lines changed

1 file changed

+73
-126
lines changed

README.md

Lines changed: 73 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)