@@ -17,6 +17,14 @@ public let StringBuilder = [
17
17
BenchmarkInfo ( name: " StringBuilder " , runFunction: run_StringBuilder, tags: [ . validation, . api, . String] ) ,
18
18
BenchmarkInfo ( name: " StringBuilderLong " , runFunction: run_StringBuilderLong, tags: [ . validation, . api, . String] ) ,
19
19
BenchmarkInfo ( name: " StringUTF16Builder " , runFunction: run_StringUTF16Builder, tags: [ . validation, . api, . String] ) ,
20
+ BenchmarkInfo (
21
+ name: " StringWordBuilder " ,
22
+ runFunction: run_StringWordBuilder,
23
+ tags: [ . validation, . api, . String] ) ,
24
+ BenchmarkInfo (
25
+ name: " StringWordBuilderReservingCapacity " ,
26
+ runFunction: run_StringWordBuilderReservingCapacity,
27
+ tags: [ . validation, . api, . String] ) ,
20
28
]
21
29
22
30
@inline ( never)
@@ -82,3 +90,28 @@ public func run_StringBuilderLong(_ N: Int) {
82
90
}
83
91
}
84
92
93
+ @inline ( never)
94
+ func buildString(
95
+ word: String ,
96
+ count: Int ,
97
+ reservingCapacity: Bool
98
+ ) -> String {
99
+ var sb = " "
100
+ if reservingCapacity {
101
+ sb. reserveCapacity ( count * word. unicodeScalars. count)
102
+ }
103
+ for _ in 0 ..< count {
104
+ sb += word
105
+ }
106
+ return sb
107
+ }
108
+
109
+ @inline ( never)
110
+ public func run_StringWordBuilder( _ N: Int ) {
111
+ _ = buildString ( word: " bumfuzzle " , count: 50_000 * N, reservingCapacity: false )
112
+ }
113
+
114
+ @inline ( never)
115
+ public func run_StringWordBuilderReservingCapacity( _ N: Int ) {
116
+ _ = buildString ( word: " bumfuzzle " , count: 50_000 * N, reservingCapacity: true )
117
+ }
0 commit comments