Skip to content

SoftStoneDevelop/StringBuilderArray

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

StringBuilderArray

Nuget Downloads Stars License

The version of StringBuilder built on an array of strings string[]: uses less memory.

Benchmark:

        [IterationSetup]
        public void Setup()
        {
            _str = new string('S', StrLength);
        }

        [Benchmark(Baseline = true, Description = "StringBuilder")]
        public void StringBuilder()
        {
            var sb = new System.Text.StringBuilder();
            for (int i = 0; i < 1000; i++)
            {
                sb.AppendLine(_str);
            }

            var result = sb.ToString();
        }

        [Benchmark(Description = "StringBuilderArray")]
        public void StringBuilderArray()
        {
            var sb = new StringBuilderArray.StringBuilderArray();
            for (int i = 0; i < 1000; i++)
            {
                sb.AppendLine(_str);
            }

            var result = sb.ToString();
        }
Method Job Runtime StrLength Mean Ratio Gen0 Gen1 Gen2 Allocated Alloc Ratio
StringBuilder .NET 7.0 .NET 7.0 5 19.11 μs 1.00 - - - 30.98 KB 1.00
StringBuilderArray .NET 7.0 .NET 7.0 5 31.31 μs 1.62 - - - 34.7 KB 1.12
StringBuilder .NET Framework 4.8.1 .NET Framework 4.8.1 5 24.59 μs 1.00 - - - 37.77 KB 1.00
StringBuilderArray .NET Framework 4.8.1 .NET Framework 4.8.1 5 14.66 μs 0.60 - - - 39.77 KB 1.05
StringBuilder .NET 7.0 .NET 7.0 7 20.76 μs 1.00 - - - 50.59 KB 1.00
StringBuilderArray .NET 7.0 .NET 7.0 7 32.11 μs 1.58 - - - 38.61 KB 0.76
StringBuilder .NET Framework 4.8.1 .NET Framework 4.8.1 7 24.95 μs 1.00 - - - 57.35 KB 1.00
StringBuilderArray .NET Framework 4.8.1 .NET Framework 4.8.1 7 14.82 μs 0.60 - - - 43.68 KB 0.76
StringBuilder .NET 7.0 .NET 7.0 10 20.49 μs 1.00 - - - 56.45 KB 1.00
StringBuilderArray .NET 7.0 .NET 7.0 10 31.46 μs 1.49 - - - 44.47 KB 0.79
StringBuilder .NET Framework 4.8.1 .NET Framework 4.8.1 10 25.54 μs 1.00 - - - 63.21 KB 1.00
StringBuilderArray .NET Framework 4.8.1 .NET Framework 4.8.1 10 15.08 μs 0.59 - - - 49.54 KB 0.78
StringBuilder .NET 7.0 .NET 7.0 50 31.72 μs 1.00 - - - 206.36 KB 1.00
StringBuilderArray .NET 7.0 .NET 7.0 50 34.72 μs 1.22 - - - 122.59 KB 0.59
StringBuilder .NET Framework 4.8.1 .NET Framework 4.8.1 50 30.14 μs 1.00 - - - 208.5 KB 1.00
StringBuilderArray .NET Framework 4.8.1 .NET Framework 4.8.1 50 14.49 μs 0.48 - - - 127.64 KB 0.61
StringBuilder .NET 7.0 .NET 7.0 100 50.03 μs 1.00 - - - 413.8 KB 1.00
StringBuilderArray .NET 7.0 .NET 7.0 100 38.52 μs 0.95 - - - 220.25 KB 0.53
StringBuilder .NET Framework 4.8.1 .NET Framework 4.8.1 100 46.52 μs 1.00 - - - 415.86 KB 1.00
StringBuilderArray .NET Framework 4.8.1 .NET Framework 4.8.1 100 24.81 μs 0.57 - - - 225.3 KB 0.54
StringBuilder .NET 7.0 .NET 7.0 1000 761.80 μs 1.00 - - - 3935.53 KB 1.00
StringBuilderArray .NET 7.0 .NET 7.0 1000 527.09 μs 0.71 - - - 1978.06 KB 0.50
StringBuilder .NET Framework 4.8.1 .NET Framework 4.8.1 1000 722.85 μs 1.00 - - - 3940.05 KB 1.00
StringBuilderArray .NET Framework 4.8.1 .NET Framework 4.8.1 1000 538.31 μs 0.77 - - - 1983.11 KB 0.50
StringBuilder .NET 7.0 .NET 7.0 2500 1,901.71 μs 1.00 - - - 9804.08 KB 1.00
StringBuilderArray .NET 7.0 .NET 7.0 2500 1,406.46 μs 0.75 - - - 4907.75 KB 0.50
StringBuilder .NET Framework 4.8.1 .NET Framework 4.8.1 2500 1,817.16 μs 1.00 - - - 9818.19 KB 1.00
StringBuilderArray .NET Framework 4.8.1 .NET Framework 4.8.1 2500 1,331.79 μs 0.75 - - - 4912.8 KB 0.50
StringBuilder .NET 7.0 .NET 7.0 5000 5,295.15 μs 1.00 1000.0000 - - 19583.76 KB 1.00
StringBuilderArray .NET 7.0 .NET 7.0 5000 2,739.29 μs 0.51 - - - 9790.56 KB 0.50
StringBuilder .NET Framework 4.8.1 .NET Framework 4.8.1 5000 4,455.02 μs 1.00 1000.0000 - - 19608.41 KB 1.00
StringBuilderArray .NET Framework 4.8.1 .NET Framework 4.8.1 5000 2,670.66 μs 0.59 - - - 9795.61 KB 0.50
StringBuilder .NET 7.0 .NET 7.0 10000 9,537.17 μs 1.00 2000.0000 1000.0000 - 39162.77 KB 1.00
StringBuilderArray .NET 7.0 .NET 7.0 10000 5,241.92 μs 0.55 - - - 19556.19 KB 0.50
StringBuilder .NET Framework 4.8.1 .NET Framework 4.8.1 10000 11,162.79 μs 1.00 3000.0000 2000.0000 - 39212.8 KB 1.00
StringBuilderArray .NET Framework 4.8.1 .NET Framework 4.8.1 10000 5,184.84 μs 0.47 - - - 19561.23 KB 0.50
StringBuilder .NET 7.0 .NET 7.0 100000 55,240.60 μs 1.00 4000.0000 4000.0000 3000.0000 390802.46 KB 1.00
StringBuilderArray .NET 7.0 .NET 7.0 100000 20,971.15 μs 0.38 - - - 195337.44 KB 0.50
StringBuilder .NET Framework 4.8.1 .NET Framework 4.8.1 100000 107,904.39 μs 1.00 5000.0000 4000.0000 3000.0000 390850.55 KB 1.00
StringBuilderArray .NET Framework 4.8.1 .NET Framework 4.8.1 100000 49,812.44 μs 0.46 - - - 195342.48 KB 0.50
StringBuilder .NET 7.0 .NET 7.0 500000 212,051.93 μs 1.00 5000.0000 4000.0000 4000.0000 1953310.77 KB 1.00
StringBuilderArray .NET 7.0 .NET 7.0 500000 104,972.60 μs 0.50 - - - 976587.44 KB 0.50
StringBuilder .NET Framework 4.8.1 .NET Framework 4.8.1 500000 525,755.95 μs 1.00 6000.0000 5000.0000 4000.0000 1953358.61 KB 1.00
StringBuilderArray .NET Framework 4.8.1 .NET Framework 4.8.1 500000 247,554.09 μs 0.47 - - - 976592.48 KB 0.50
StringBuilder .NET 7.0 .NET 7.0 1071741 288,194.84 μs 1.00 5000.0000 4000.0000 4000.0000 4186664.2 KB 1.00
StringBuilderArray .NET 7.0 .NET 7.0 1071741 152,733.12 μs 0.53 - - - 2093269.08 KB 0.50
StringBuilder .NET Framework 4.8.1 .NET Framework 4.8.1 1071741 1,037,825.78 μs 1.00 6000.0000 5000.0000 4000.0000 4186723.62 KB 1.00
StringBuilderArray .NET Framework 4.8.1 .NET Framework 4.8.1 1071741 495,930.11 μs 0.48 - - - 2093274.13 KB 0.50

About

Collect the resulting string without allocating memory.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages