|
13 | 13 |
|
14 | 14 | The version of StringBuilder built on an array of strings string[]: uses less memory. |
15 | 15 |
|
16 | | -Benchmark: |
| 16 | +## Benchmark: |
17 | 17 |
|
18 | 18 | ```C# |
19 | 19 |
|
@@ -51,39 +51,78 @@ Benchmark: |
51 | 51 |
|
52 | 52 | | Method | StrLength | Mean | Ratio | Gen0 | Gen1 | Gen2 | Allocated | Alloc Ratio | |
53 | 53 | |------------------- |---------- |--------------:|------:|----------:|----------:|----------:|--------------:|------------:| |
54 | | -| **StringBuilder** | **5** | **18.40 μs** | **1.00** | **-** | **-** | **-** | **30.98 KB** | **1.00** | |
55 | | -| StringBuilderArray | 5 | 32.89 μs | 1.79 | - | - | - | 34.7 KB | 1.12 | |
| 54 | +| **System.Text.StringBuilder** | **5** | **17.97 μs** | **1.00** | **-** | **-** | **-** | **30.98 KB** | **1.00** | |
| 55 | +| StringBuilderArray | 5 | 31.92 μs | 1.77 | - | - | - | 34.77 KB | 1.12 | |
56 | 56 | | | | | | | | | | | |
57 | | -| **StringBuilder** | **7** | **20.89 μs** | **1.00** | **-** | **-** | **-** | **50.59 KB** | **1.00** | |
58 | | -| StringBuilderArray | 7 | 32.57 μs | 1.57 | - | - | - | 38.61 KB | 0.76 | |
| 57 | +| **System.Text.StringBuilder** | **7** | **19.56 μs** | **1.00** | **-** | **-** | **-** | **50.59 KB** | **1.00** | |
| 58 | +| StringBuilderArray | 7 | 31.61 μs | 1.64 | - | - | - | 38.67 KB | 0.76 | |
59 | 59 | | | | | | | | | | | |
60 | | -| **StringBuilder** | **10** | **16.01 μs** | **1.00** | **-** | **-** | **-** | **56.45 KB** | **1.00** | |
61 | | -| StringBuilderArray | 10 | 34.88 μs | 2.23 | - | - | - | 44.47 KB | 0.79 | |
| 60 | +| **System.Text.StringBuilder** | **10** | **18.31 μs** | **1.00** | **-** | **-** | **-** | **56.45 KB** | **1.00** | |
| 61 | +| StringBuilderArray | 10 | 32.29 μs | 1.76 | - | - | - | 44.53 KB | 0.79 | |
62 | 62 | | | | | | | | | | | |
63 | | -| **StringBuilder** | **50** | **23.38 μs** | **1.00** | **-** | **-** | **-** | **206.36 KB** | **1.00** | |
64 | | -| StringBuilderArray | 50 | 36.02 μs | 1.48 | - | - | - | 122.59 KB | 0.59 | |
| 63 | +| **System.Text.StringBuilder** | **50** | **28.05 μs** | **1.00** | **-** | **-** | **-** | **206.36 KB** | **1.00** | |
| 64 | +| StringBuilderArray | 50 | 34.38 μs | 1.39 | - | - | - | 122.66 KB | 0.59 | |
65 | 65 | | | | | | | | | | | |
66 | | -| **StringBuilder** | **100** | **27.13 μs** | **1.00** | **-** | **-** | **-** | **413.8 KB** | **1.00** | |
67 | | -| StringBuilderArray | 100 | 43.94 μs | 1.77 | - | - | - | 220.25 KB | 0.53 | |
| 66 | +| **System.Text.StringBuilder** | **100** | **29.47 μs** | **1.00** | **-** | **-** | **-** | **413.8 KB** | **1.00** | |
| 67 | +| StringBuilderArray | 100 | 37.92 μs | 1.28 | - | - | - | 220.31 KB | 0.53 | |
68 | 68 | | | | | | | | | | | |
69 | | -| **StringBuilder** | **1000** | **735.77 μs** | **1.00** | **-** | **-** | **-** | **3935.53 KB** | **1.00** | |
70 | | -| StringBuilderArray | 1000 | 570.10 μs | 0.80 | - | - | - | 1978.06 KB | 0.50 | |
| 69 | +| **System.Text.StringBuilder** | **1000** | **747.71 μs** | **1.00** | **-** | **-** | **-** | **3935.53 KB** | **1.00** | |
| 70 | +| StringBuilderArray | 1000 | 550.49 μs | 0.78 | - | - | - | 1978.13 KB | 0.50 | |
71 | 71 | | | | | | | | | | | |
72 | | -| **StringBuilder** | **2500** | **1,790.58 μs** | **1.00** | **-** | **-** | **-** | **9804.08 KB** | **1.00** | |
73 | | -| StringBuilderArray | 2500 | 1,412.22 μs | 0.79 | - | - | - | 4907.75 KB | 0.50 | |
| 72 | +| **System.Text.StringBuilder** | **2500** | **1,869.84 μs** | **1.00** | **-** | **-** | **-** | **9804.08 KB** | **1.00** | |
| 73 | +| StringBuilderArray | 2500 | 1,348.66 μs | 0.73 | - | - | - | 4907.81 KB | 0.50 | |
74 | 74 | | | | | | | | | | | |
75 | | -| **StringBuilder** | **5000** | **4,863.92 μs** | **1.00** | **1000.0000** | **-** | **-** | **19583.76 KB** | **1.00** | |
76 | | -| StringBuilderArray | 5000 | 2,689.05 μs | 0.55 | - | - | - | 9790.56 KB | 0.50 | |
| 75 | +| **System.Text.StringBuilder** | **5000** | **5,274.39 μs** | **1.00** | **1000.0000** | **-** | **-** | **19583.76 KB** | **1.00** | |
| 76 | +| StringBuilderArray | 5000 | 2,672.41 μs | 0.51 | - | - | - | 9790.63 KB | 0.50 | |
77 | 77 | | | | | | | | | | | |
78 | | -| **StringBuilder** | **10000** | **10,137.72 μs** | **1.00** | **2000.0000** | **1000.0000** | **-** | **39162.77 KB** | **1.00** | |
79 | | -| StringBuilderArray | 10000 | 5,259.71 μs | 0.51 | - | - | - | 19556.19 KB | 0.50 | |
| 78 | +| **System.Text.StringBuilder** | **10000** | **10,141.16 μs** | **1.00** | **2000.0000** | **1000.0000** | **-** | **39162.77 KB** | **1.00** | |
| 79 | +| StringBuilderArray | 10000 | 5,112.69 μs | 0.50 | - | - | - | 19556.25 KB | 0.50 | |
80 | 80 | | | | | | | | | | | |
81 | | -| **StringBuilder** | **100000** | **54,801.69 μs** | **1.00** | **4000.0000** | **4000.0000** | **3000.0000** | **390802.44 KB** | **1.00** | |
82 | | -| StringBuilderArray | 100000 | 20,538.66 μs | 0.37 | - | - | - | 195337.44 KB | 0.50 | |
| 81 | +| **System.Text.StringBuilder** | **100000** | **54,063.39 μs** | **1.00** | **4000.0000** | **4000.0000** | **3000.0000** | **390802.44 KB** | **1.00** | |
| 82 | +| StringBuilderArray | 100000 | 20,596.38 μs | 0.38 | - | - | - | 195337.5 KB | 0.50 | |
83 | 83 | | | | | | | | | | | |
84 | | -| **StringBuilder** | **500000** | **210,721.40 μs** | **1.00** | **5000.0000** | **4000.0000** | **4000.0000** | **1953310.77 KB** | **1.00** | |
85 | | -| StringBuilderArray | 500000 | 105,015.80 μs | 0.50 | - | - | - | 976587.44 KB | 0.50 | |
| 84 | +| **System.Text.StringBuilder** | **500000** | **210,668.68 μs** | **1.00** | **5000.0000** | **4000.0000** | **4000.0000** | **1953310.77 KB** | **1.00** | |
| 85 | +| StringBuilderArray | 500000 | 105,116.28 μs | 0.50 | - | - | - | 976587.5 KB | 0.50 | |
86 | 86 | | | | | | | | | | | |
87 | | -| **StringBuilder** | **1071741** | **289,243.13 μs** | **1.00** | **5000.0000** | **4000.0000** | **4000.0000** | **4186664.2 KB** | **1.00** | |
88 | | -| StringBuilderArray | 1071741 | 152,814.02 μs | 0.53 | - | - | - | 2093269.08 KB | 0.50 | |
| 87 | +| **System.Text.StringBuilder** | **1071741** | **289,865.89 μs** | **1.00** | **5000.0000** | **4000.0000** | **4000.0000** | **4186664.2 KB** | **1.00** | |
| 88 | +| StringBuilderArray | 1071741 | 152,856.84 μs | 0.53 | - | - | - | 2093269.14 KB | 0.50 | |
89 | 89 |
|
| 90 | +## Reuse instance benchmark |
| 91 | + |
| 92 | +| Method | StrLength | Mean | Ratio | Gen0 | Gen1 | Gen2 | Allocated | Alloc Ratio | |
| 93 | +|------------------- |---------- |--------------:|------:|----------:|----------:|----------:|--------------:|------------:| |
| 94 | +| **System.Text.StringBuilder** | **5** | **22.54 μs** | **1.00** | **-** | **-** | **-** | **47.01 KB** | **1.00** | |
| 95 | +| StringBuilderArray | 5 | 39.13 μs | 1.75 | - | - | - | 45.12 KB | 0.96 | |
| 96 | +| | | | | | | | | | |
| 97 | +| **System.Text.StringBuilder** | **7** | **21.42 μs** | **1.00** | **-** | **-** | **-** | **71.7 KB** | **1.00** | |
| 98 | +| StringBuilderArray | 7 | 38.15 μs | 1.78 | - | - | - | 49.02 KB | 0.68 | |
| 99 | +| | | | | | | | | | |
| 100 | +| **System.Text.StringBuilder** | **10** | **22.49 μs** | **1.00** | **-** | **-** | **-** | **84.59 KB** | **1.00** | |
| 101 | +| StringBuilderArray | 10 | 39.34 μs | 1.77 | - | - | - | 54.88 KB | 0.65 | |
| 102 | +| | | | | | | | | | |
| 103 | +| **System.Text.StringBuilder** | **50** | **29.06 μs** | **1.00** | **-** | **-** | **-** | **309.51 KB** | **1.00** | |
| 104 | +| StringBuilderArray | 50 | 41.42 μs | 1.42 | - | - | - | 133.01 KB | 0.43 | |
| 105 | +| | | | | | | | | | |
| 106 | +| **System.Text.StringBuilder** | **100** | **96.25 μs** | **1.00** | **-** | **-** | **-** | **626.33 KB** | **1.00** | |
| 107 | +| StringBuilderArray | 100 | 49.48 μs | 0.56 | - | - | - | 230.66 KB | 0.37 | |
| 108 | +| | | | | | | | | | |
| 109 | +| **System.Text.StringBuilder** | **1000** | **1,109.48 μs** | **1.00** | **-** | **-** | **-** | **5904.3 KB** | **1.00** | |
| 110 | +| StringBuilderArray | 1000 | 542.58 μs | 0.50 | - | - | - | 1988.48 KB | 0.34 | |
| 111 | +| | | | | | | | | | |
| 112 | +| **System.Text.StringBuilder** | **2500** | **3,839.15 μs** | **1.00** | **1000.0000** | **1000.0000** | **1000.0000** | **14698.94 KB** | **1.00** | |
| 113 | +| StringBuilderArray | 2500 | 1,378.40 μs | 0.36 | - | - | - | 4918.16 KB | 0.33 | |
| 114 | +| | | | | | | | | | |
| 115 | +| **System.Text.StringBuilder** | **5000** | **8,019.07 μs** | **1.00** | **2000.0000** | **1000.0000** | **1000.0000** | **29353.62 KB** | **1.00** | |
| 116 | +| StringBuilderArray | 5000 | 2,711.04 μs | 0.36 | - | - | - | 9800.98 KB | 0.33 | |
| 117 | +| | | | | | | | | | |
| 118 | +| **System.Text.StringBuilder** | **10000** | **13,084.87 μs** | **1.00** | **3000.0000** | **2000.0000** | **1000.0000** | **58702.15 KB** | **1.00** | |
| 119 | +| StringBuilderArray | 10000 | 5,610.82 μs | 0.42 | - | - | - | 19566.6 KB | 0.33 | |
| 120 | +| | | | | | | | | | |
| 121 | +| **System.Text.StringBuilder** | **100000** | **95,966.62 μs** | **1.00** | **5000.0000** | **5000.0000** | **4000.0000** | **586134.84 KB** | **1.00** | |
| 122 | +| StringBuilderArray | 100000 | 20,813.11 μs | 0.25 | - | - | - | 195347.85 KB | 0.33 | |
| 123 | +| | | | | | | | | | |
| 124 | +| **System.Text.StringBuilder** | **500000** | **284,075.06 μs** | **1.00** | **7000.0000** | **6000.0000** | **4000.0000** | **2930037.34 KB** | **1.00** | |
| 125 | +| StringBuilderArray | 500000 | 105,142.19 μs | 0.37 | - | - | - | 976597.85 KB | 0.33 | |
| 126 | +| | | | | | | | | | |
| 127 | +| **System.Text.StringBuilder** | **1071741** | **370,876.76 μs** | **1.00** | **7000.0000** | **6000.0000** | **4000.0000** | **6280013.72 KB** | **1.00** | |
| 128 | +| StringBuilderArray | 1071741 | 152,671.59 μs | 0.41 | - | - | - | 2093279.49 KB | 0.33 | |
0 commit comments