@@ -53,29 +53,28 @@ More detailed documentation can be found [here](https://linkdotnet.github.io/Str
5353The following table compares the built-in ` StringBuilder ` and this library's ` ValueStringBuilder ` :
5454
5555``` no-class
56- BenchmarkDotNet=v0.13.2, OS=macOS Monterey 12.6.1 (21G217) [Darwin 21.6.0]
57- Apple M1 Pro, 1 CPU, 10 logical and 10 physical cores
58- .NET SDK=7.0.100-rc.2.22477.23
59- [Host] : .NET 6.0.10 (6.0.1022.47605), Arm64 RyuJIT AdvSIMD
60- DefaultJob : .NET 6.0.10 (6.0.1022.47605), Arm64 RyuJIT AdvSIMD
61-
62-
63- | Method | Mean | Error | StdDev | Ratio | RatioSD | Gen0 | Allocated | Alloc Ratio |
64- |------------------------------- |-----------:|---------:|---------:|------:|--------:|--------:|----------:|------------:|
65- | DotNetStringBuilder | 227.3 ns | 1.31 ns | 1.22 ns | 1.00 | 0.00 | 0.7114 | 1488 B | 1.00 |
66- | ValueStringBuilder | 128.7 ns | 0.57 ns | 0.53 ns | 0.57 | 0.00 | 0.2677 | 560 B | 0.38 |
67- | ValueStringBuilderPreAllocated | 113.9 ns | 0.67 ns | 0.60 ns | 0.50 | 0.00 | 0.2677 | 560 B | 0.38 |
56+ BenchmarkDotNet v0.14.0, macOS Sequoia 15.3.1 (24D70) [Darwin 24.3.0]
57+ Apple M2 Pro, 1 CPU, 12 logical and 12 physical cores
58+ .NET SDK 9.0.200
59+ [Host] : .NET 9.0.2 (9.0.225.6610), Arm64 RyuJIT AdvSIMD
60+ DefaultJob : .NET 9.0.2 (9.0.225.6610), Arm64 RyuJIT AdvSIMD
61+
62+
63+ | Method | Mean | Error | StdDev | Ratio | Gen0 | Allocated | Alloc Ratio |
64+ |-------------------- |----------:|---------:|---------:|------:|-------:|----------:|------------:|
65+ | DotNetStringBuilder | 126.74 ns | 0.714 ns | 0.667 ns | 1.00 | 0.1779 | 1488 B | 1.00 |
66+ | ValueStringBuilder | 95.69 ns | 0.118 ns | 0.110 ns | 0.76 | 0.0669 | 560 B | 0.38 |
6867```
6968
7069For more comparisons, check the documentation.
7170
7271Another benchmark shows that ` ValueStringBuilder ` allocates less memory when appending value types (such as ` int ` and ` double ` ):
7372
7473``` no-class
75- | Method | Mean | Error | StdDev | Gen 0 | Allocated |
76- |-------------------- |---------:|--------- :|---------:|-------:|----------:|
77- | DotNetStringBuilder | 17.21 us | 0.622 us | 1.805 us | 1.5259 | 6 KB |
78- | ValueStringBuilder | 16.24 us | 0.496 us | 1.462 us | 0.3357 | 1 KB |
74+ | Method | Mean | Error | StdDev | Gen0 | Gen1 | Allocated |
75+ |------------------------------- |---------:|--------:|--------:| -------:|-------:|----------:|
76+ | ValueStringBuilderAppendFormat | 821.7 ns | 1.29 ns | 1.14 ns | 0.4330 | - | 3.54 KB |
77+ | StringBuilderAppendFormat | 741.5 ns | 5.58 ns | 5.22 ns | 0.9909 | 0.0057 | 8. 1 KB |
7978```
8079
8180Check out the [ Benchmark] ( tests/LinkDotNet.StringBuilder.Benchmarks ) for a more detailed comparison and setup.
0 commit comments