ToString
[IterationSetup]publicvoidSetup(){_str=newstring('S',StrLength);_sb=newSystem.Text.StringBuilder();for(inti=0;i<1000;i++){_sb.AppendLine(_str);}_sbArr=newStringBuilderArray.StringBuilderArray();for(inti=0;i<1000;i++){_sbArr.AppendLine(_str);}}[Benchmark(Baseline=true,Description="StringBuilderArray")]publicvoidStringBuilderArray(){_sbArr.ToString();}[Benchmark(Description="StringBuilder")]publicvoidStringBuilder(){_sb.ToString();}| Method | Job | Runtime | StrLength | Mean | Ratio | Allocated | Alloc Ratio |
|---|---|---|---|---|---|---|---|
| StringBuilderArray | .NET 10.0 | .NET 10.0 | 1071741 | 289,587.367 μs | 1.00 | 2093248.07 KB | 1.00 |
| StringBuilder | .NET 10.0 | .NET 10.0 | 1071741 | 318,024.700 μs | 1.10 | 2093248.07 KB | 1.00 |
| StringBuilderArray | NativeAOT 10.0 | NativeAOT 10.0 | 1071741 | 292,666.936 μs | 1.00 | 2093248.07 KB | 1.00 |
| StringBuilder | NativeAOT 10.0 | NativeAOT 10.0 | 1071741 | 320,468.233 μs | 1.10 | 2093248.07 KB | 1.00 |
AppendLine
[IterationSetup]publicvoidSetup(){_str=newstring('S',StrLength);}[Benchmark(Baseline=true,Description="StringBuilderArray")]publicvoidStringBuilderArray(){varsb=newStringBuilderArray.StringBuilderArray();for(inti=0;i<1000;i++){sb.AppendLine(_str);}}[Benchmark(Description="StringBuilder")]publicvoidStringBuilder(){varsb=newSystem.Text.StringBuilder();for(inti=0;i<1000;i++){sb.AppendLine(_str);}}[Benchmark(Description="DefaultInterpolatedStringHandler")]publicvoidDefaultInterpolatedStringHandler(){varsb=newDefaultInterpolatedStringHandler();for(inti=0;i<1000;i++){sb.AppendLiteral(_str);}}| Method | Job | Runtime | StrLength | Mean | Ratio | Allocated | Alloc Ratio |
|---|---|---|---|---|---|---|---|
| StringBuilderArray | .NET 10.0 | .NET 10.0 | 1071741 | 29.945 μs | 1.03 | 20.48 KB | 1.00 |
| StringBuilder | .NET 10.0 | .NET 10.0 | 1071741 | 123,382.045 μs | 4,229.27 | 2093438.98 KB | 102,196.87 |
| DefaultInterpolatedStringHandler | .NET 10.0 | .NET 10.0 | 1071741 | 231,279.579 μs | 7,927.77 | 2097152.02 KB | 102,378.13 |
| StringBuilderArray | NativeAOT 10.0 | NativeAOT 10.0 | 1071741 | 6.277 μs | 1.02 | 20.48 KB | 1.00 |
| StringBuilder | NativeAOT 10.0 | NativeAOT 10.0 | 1071741 | 126,442.383 μs | 20,631.07 | 2093440.23 KB | 102,196.93 |
| DefaultInterpolatedStringHandler | NativeAOT 10.0 | NativeAOT 10.0 | 1071741 | 227,531.679 μs | 37,125.38 | 2097152.4 KB | 102,378.15 |
AppendLine + Clear
[IterationSetup]publicvoidSetup(){_str=newstring('S',StrLength);}[Benchmark(Baseline=true,Description="StringBuilderArray")]publicvoidStringBuilderArray(){varsb=newStringBuilderArray.StringBuilderArray();for(inti=0;i<1000;i++){sb.AppendLine(_str);}sb.Clear();for(inti=0;i<1000;i++){sb.AppendLine(_str);}}[Benchmark(Description="StringBuilder")]publicvoidStringBuilder(){varsb=newSystem.Text.StringBuilder();for(inti=0;i<1000;i++){sb.AppendLine(_str);}sb.Clear();for(inti=0;i<1000;i++){sb.AppendLine(_str);}}[Benchmark(Description="DefaultInterpolatedStringHandler")]publicvoidDefaultInterpolatedStringHandler(){varsb=newDefaultInterpolatedStringHandler();for(inti=0;i<1000;i++){sb.AppendLiteral(_str);}sb.Clear();for(inti=0;i<1000;i++){sb.AppendLiteral(_str);}}| Method | Job | Runtime | StrLength | Mean | Ratio | Allocated | Alloc Ratio |
|---|---|---|---|---|---|---|---|
| StringBuilderArray | .NET 10.0 | .NET 10.0 | 1071741 | 39.325 μs | 1.03 | 40.82 KB | 1.00 |
| StringBuilder | .NET 10.0 | .NET 10.0 | 1071741 | 233,685.746 μs | 6,141.00 | 4186788.48 KB | 102,566.30 |
| DefaultInterpolatedStringHandler | .NET 10.0 | .NET 10.0 | 1071741 | 466,345.020 μs | 12,255.03 | 2097152.02 KB | 51,375.21 |
| StringBuilderArray | NativeAOT 10.0 | NativeAOT 10.0 | 1071741 | 10.092 μs | 1.01 | 40.87 KB | 1.00 |
| StringBuilder | NativeAOT 10.0 | NativeAOT 10.0 | 1071741 | 240,078.979 μs | 23,996.71 | 4186789.73 KB | 102,448.69 |
| DefaultInterpolatedStringHandler | NativeAOT 10.0 | NativeAOT 10.0 | 1071741 | 455,444.213 μs | 45,523.19 | 2097152.02 KB | 51,316.28 |
Insert
[IterationSetup]publicvoidSetup(){_str=newstring('S',StrLength);}[Benchmark(Baseline=true,Description="StringBuilderArray")]publicvoidStringBuilderArray(){varsb=newStringBuilderArray.StringBuilderArray();for(inti=0;i<100;i++){sb.Append(_str);}sb.Insert(0,_str);//in startsb.Insert(100,_str);//after 5 str from startsb.Insert(96,_str);}[Benchmark(Description="StringBuilder")]publicvoidStringBuilder(){varsb=newSystem.Text.StringBuilder();for(inti=0;i<100;i++){sb.Append(_str);}//before 1 str from endsb.Insert(99*_str.Length,_str);//in startsb.Insert(0,_str);//after 5 str from startsb.Insert(5*_str.Length,_str);}| Method | Job | Runtime | StrLength | Mean | Ratio | Allocated | Alloc Ratio |
|---|---|---|---|---|---|---|---|
| StringBuilderArray | .NET 10.0 | .NET 10.0 | 1071741 | 5.069 μs | 1.02 | 1.45 KB | 1.00 |
| StringBuilder | .NET 10.0 | .NET 10.0 | 1071741 | 14,424.515 μs | 2,909.17 | 215628.59 KB | 148,389.57 |
| StringBuilderArray | NativeAOT 10.0 | NativeAOT 10.0 | 1071741 | 2.073 μs | 1.01 | 1.45 KB | 1.00 |
| StringBuilder | NativeAOT 10.0 | NativeAOT 10.0 | 1071741 | 13,324.245 μs | 6,492.04 | 215629.18 KB | 148,389.97 |