From dfc76c671f0c08607adefd61186995e6bfa66b0a Mon Sep 17 00:00:00 2001 From: Vyacheslav Brevnov Date: Sat, 15 Jul 2023 11:09:20 +0300 Subject: [PATCH] Update README.md --- README.md | 89 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 64 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 4891e0e..ac61d64 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ The version of StringBuilder built on an array of strings string[]: uses less memory. -Benchmark: +## Benchmark: ```C# @@ -51,39 +51,78 @@ Benchmark: | Method | StrLength | Mean | Ratio | Gen0 | Gen1 | Gen2 | Allocated | Alloc Ratio | |------------------- |---------- |--------------:|------:|----------:|----------:|----------:|--------------:|------------:| -| **StringBuilder** | **5** | **18.40 μs** | **1.00** | **-** | **-** | **-** | **30.98 KB** | **1.00** | -| StringBuilderArray | 5 | 32.89 μs | 1.79 | - | - | - | 34.7 KB | 1.12 | +| **System.Text.StringBuilder** | **5** | **17.97 μs** | **1.00** | **-** | **-** | **-** | **30.98 KB** | **1.00** | +| StringBuilderArray | 5 | 31.92 μs | 1.77 | - | - | - | 34.77 KB | 1.12 | | | | | | | | | | | -| **StringBuilder** | **7** | **20.89 μs** | **1.00** | **-** | **-** | **-** | **50.59 KB** | **1.00** | -| StringBuilderArray | 7 | 32.57 μs | 1.57 | - | - | - | 38.61 KB | 0.76 | +| **System.Text.StringBuilder** | **7** | **19.56 μs** | **1.00** | **-** | **-** | **-** | **50.59 KB** | **1.00** | +| StringBuilderArray | 7 | 31.61 μs | 1.64 | - | - | - | 38.67 KB | 0.76 | | | | | | | | | | | -| **StringBuilder** | **10** | **16.01 μs** | **1.00** | **-** | **-** | **-** | **56.45 KB** | **1.00** | -| StringBuilderArray | 10 | 34.88 μs | 2.23 | - | - | - | 44.47 KB | 0.79 | +| **System.Text.StringBuilder** | **10** | **18.31 μs** | **1.00** | **-** | **-** | **-** | **56.45 KB** | **1.00** | +| StringBuilderArray | 10 | 32.29 μs | 1.76 | - | - | - | 44.53 KB | 0.79 | | | | | | | | | | | -| **StringBuilder** | **50** | **23.38 μs** | **1.00** | **-** | **-** | **-** | **206.36 KB** | **1.00** | -| StringBuilderArray | 50 | 36.02 μs | 1.48 | - | - | - | 122.59 KB | 0.59 | +| **System.Text.StringBuilder** | **50** | **28.05 μs** | **1.00** | **-** | **-** | **-** | **206.36 KB** | **1.00** | +| StringBuilderArray | 50 | 34.38 μs | 1.39 | - | - | - | 122.66 KB | 0.59 | | | | | | | | | | | -| **StringBuilder** | **100** | **27.13 μs** | **1.00** | **-** | **-** | **-** | **413.8 KB** | **1.00** | -| StringBuilderArray | 100 | 43.94 μs | 1.77 | - | - | - | 220.25 KB | 0.53 | +| **System.Text.StringBuilder** | **100** | **29.47 μs** | **1.00** | **-** | **-** | **-** | **413.8 KB** | **1.00** | +| StringBuilderArray | 100 | 37.92 μs | 1.28 | - | - | - | 220.31 KB | 0.53 | | | | | | | | | | | -| **StringBuilder** | **1000** | **735.77 μs** | **1.00** | **-** | **-** | **-** | **3935.53 KB** | **1.00** | -| StringBuilderArray | 1000 | 570.10 μs | 0.80 | - | - | - | 1978.06 KB | 0.50 | +| **System.Text.StringBuilder** | **1000** | **747.71 μs** | **1.00** | **-** | **-** | **-** | **3935.53 KB** | **1.00** | +| StringBuilderArray | 1000 | 550.49 μs | 0.78 | - | - | - | 1978.13 KB | 0.50 | | | | | | | | | | | -| **StringBuilder** | **2500** | **1,790.58 μs** | **1.00** | **-** | **-** | **-** | **9804.08 KB** | **1.00** | -| StringBuilderArray | 2500 | 1,412.22 μs | 0.79 | - | - | - | 4907.75 KB | 0.50 | +| **System.Text.StringBuilder** | **2500** | **1,869.84 μs** | **1.00** | **-** | **-** | **-** | **9804.08 KB** | **1.00** | +| StringBuilderArray | 2500 | 1,348.66 μs | 0.73 | - | - | - | 4907.81 KB | 0.50 | | | | | | | | | | | -| **StringBuilder** | **5000** | **4,863.92 μs** | **1.00** | **1000.0000** | **-** | **-** | **19583.76 KB** | **1.00** | -| StringBuilderArray | 5000 | 2,689.05 μs | 0.55 | - | - | - | 9790.56 KB | 0.50 | +| **System.Text.StringBuilder** | **5000** | **5,274.39 μs** | **1.00** | **1000.0000** | **-** | **-** | **19583.76 KB** | **1.00** | +| StringBuilderArray | 5000 | 2,672.41 μs | 0.51 | - | - | - | 9790.63 KB | 0.50 | | | | | | | | | | | -| **StringBuilder** | **10000** | **10,137.72 μs** | **1.00** | **2000.0000** | **1000.0000** | **-** | **39162.77 KB** | **1.00** | -| StringBuilderArray | 10000 | 5,259.71 μs | 0.51 | - | - | - | 19556.19 KB | 0.50 | +| **System.Text.StringBuilder** | **10000** | **10,141.16 μs** | **1.00** | **2000.0000** | **1000.0000** | **-** | **39162.77 KB** | **1.00** | +| StringBuilderArray | 10000 | 5,112.69 μs | 0.50 | - | - | - | 19556.25 KB | 0.50 | | | | | | | | | | | -| **StringBuilder** | **100000** | **54,801.69 μs** | **1.00** | **4000.0000** | **4000.0000** | **3000.0000** | **390802.44 KB** | **1.00** | -| StringBuilderArray | 100000 | 20,538.66 μs | 0.37 | - | - | - | 195337.44 KB | 0.50 | +| **System.Text.StringBuilder** | **100000** | **54,063.39 μs** | **1.00** | **4000.0000** | **4000.0000** | **3000.0000** | **390802.44 KB** | **1.00** | +| StringBuilderArray | 100000 | 20,596.38 μs | 0.38 | - | - | - | 195337.5 KB | 0.50 | | | | | | | | | | | -| **StringBuilder** | **500000** | **210,721.40 μs** | **1.00** | **5000.0000** | **4000.0000** | **4000.0000** | **1953310.77 KB** | **1.00** | -| StringBuilderArray | 500000 | 105,015.80 μs | 0.50 | - | - | - | 976587.44 KB | 0.50 | +| **System.Text.StringBuilder** | **500000** | **210,668.68 μs** | **1.00** | **5000.0000** | **4000.0000** | **4000.0000** | **1953310.77 KB** | **1.00** | +| StringBuilderArray | 500000 | 105,116.28 μs | 0.50 | - | - | - | 976587.5 KB | 0.50 | | | | | | | | | | | -| **StringBuilder** | **1071741** | **289,243.13 μs** | **1.00** | **5000.0000** | **4000.0000** | **4000.0000** | **4186664.2 KB** | **1.00** | -| StringBuilderArray | 1071741 | 152,814.02 μs | 0.53 | - | - | - | 2093269.08 KB | 0.50 | +| **System.Text.StringBuilder** | **1071741** | **289,865.89 μs** | **1.00** | **5000.0000** | **4000.0000** | **4000.0000** | **4186664.2 KB** | **1.00** | +| StringBuilderArray | 1071741 | 152,856.84 μs | 0.53 | - | - | - | 2093269.14 KB | 0.50 | +## Reuse instance benchmark + +| Method | StrLength | Mean | Ratio | Gen0 | Gen1 | Gen2 | Allocated | Alloc Ratio | +|------------------- |---------- |--------------:|------:|----------:|----------:|----------:|--------------:|------------:| +| **System.Text.StringBuilder** | **5** | **22.54 μs** | **1.00** | **-** | **-** | **-** | **47.01 KB** | **1.00** | +| StringBuilderArray | 5 | 39.13 μs | 1.75 | - | - | - | 45.12 KB | 0.96 | +| | | | | | | | | | +| **System.Text.StringBuilder** | **7** | **21.42 μs** | **1.00** | **-** | **-** | **-** | **71.7 KB** | **1.00** | +| StringBuilderArray | 7 | 38.15 μs | 1.78 | - | - | - | 49.02 KB | 0.68 | +| | | | | | | | | | +| **System.Text.StringBuilder** | **10** | **22.49 μs** | **1.00** | **-** | **-** | **-** | **84.59 KB** | **1.00** | +| StringBuilderArray | 10 | 39.34 μs | 1.77 | - | - | - | 54.88 KB | 0.65 | +| | | | | | | | | | +| **System.Text.StringBuilder** | **50** | **29.06 μs** | **1.00** | **-** | **-** | **-** | **309.51 KB** | **1.00** | +| StringBuilderArray | 50 | 41.42 μs | 1.42 | - | - | - | 133.01 KB | 0.43 | +| | | | | | | | | | +| **System.Text.StringBuilder** | **100** | **96.25 μs** | **1.00** | **-** | **-** | **-** | **626.33 KB** | **1.00** | +| StringBuilderArray | 100 | 49.48 μs | 0.56 | - | - | - | 230.66 KB | 0.37 | +| | | | | | | | | | +| **System.Text.StringBuilder** | **1000** | **1,109.48 μs** | **1.00** | **-** | **-** | **-** | **5904.3 KB** | **1.00** | +| StringBuilderArray | 1000 | 542.58 μs | 0.50 | - | - | - | 1988.48 KB | 0.34 | +| | | | | | | | | | +| **System.Text.StringBuilder** | **2500** | **3,839.15 μs** | **1.00** | **1000.0000** | **1000.0000** | **1000.0000** | **14698.94 KB** | **1.00** | +| StringBuilderArray | 2500 | 1,378.40 μs | 0.36 | - | - | - | 4918.16 KB | 0.33 | +| | | | | | | | | | +| **System.Text.StringBuilder** | **5000** | **8,019.07 μs** | **1.00** | **2000.0000** | **1000.0000** | **1000.0000** | **29353.62 KB** | **1.00** | +| StringBuilderArray | 5000 | 2,711.04 μs | 0.36 | - | - | - | 9800.98 KB | 0.33 | +| | | | | | | | | | +| **System.Text.StringBuilder** | **10000** | **13,084.87 μs** | **1.00** | **3000.0000** | **2000.0000** | **1000.0000** | **58702.15 KB** | **1.00** | +| StringBuilderArray | 10000 | 5,610.82 μs | 0.42 | - | - | - | 19566.6 KB | 0.33 | +| | | | | | | | | | +| **System.Text.StringBuilder** | **100000** | **95,966.62 μs** | **1.00** | **5000.0000** | **5000.0000** | **4000.0000** | **586134.84 KB** | **1.00** | +| StringBuilderArray | 100000 | 20,813.11 μs | 0.25 | - | - | - | 195347.85 KB | 0.33 | +| | | | | | | | | | +| **System.Text.StringBuilder** | **500000** | **284,075.06 μs** | **1.00** | **7000.0000** | **6000.0000** | **4000.0000** | **2930037.34 KB** | **1.00** | +| StringBuilderArray | 500000 | 105,142.19 μs | 0.37 | - | - | - | 976597.85 KB | 0.33 | +| | | | | | | | | | +| **System.Text.StringBuilder** | **1071741** | **370,876.76 μs** | **1.00** | **7000.0000** | **6000.0000** | **4000.0000** | **6280013.72 KB** | **1.00** | +| StringBuilderArray | 1071741 | 152,671.59 μs | 0.41 | - | - | - | 2093279.49 KB | 0.33 |