@@ -26,6 +26,38 @@ public let UTF8Decode = [
26
26
name: " UTF8Decode_InitDecoding " ,
27
27
runFunction: run_UTF8Decode_InitDecoding,
28
28
tags: [ . validation, . api, . String] ) ,
29
+ BenchmarkInfo (
30
+ name: " String.init.decodingUTF8.UMRBP " ,
31
+ runFunction: run_UTF8Decode_InitDecodingUMRBP,
32
+ tags: [ . validation, . api, . String] ) ,
33
+ BenchmarkInfo (
34
+ name: " String.init.decodingUTF8.UMRBPSlice " ,
35
+ runFunction: run_UTF8Decode_InitDecodingUMRBPSlice,
36
+ tags: [ . validation, . api, . String] ) ,
37
+ BenchmarkInfo (
38
+ name: " String.init.decodingUTF8.URBP " ,
39
+ runFunction: run_UTF8Decode_InitDecodingURBP,
40
+ tags: [ . validation, . api, . String] ) ,
41
+ BenchmarkInfo (
42
+ name: " String.init.decodingUTF8.URBPSlice " ,
43
+ runFunction: run_UTF8Decode_InitDecodingURBPSlice,
44
+ tags: [ . validation, . api, . String] ) ,
45
+ BenchmarkInfo (
46
+ name: " String.init.decodingUTF8.UMBP " ,
47
+ runFunction: run_UTF8Decode_InitDecodingUMBP,
48
+ tags: [ . validation, . api, . String] ) ,
49
+ BenchmarkInfo (
50
+ name: " String.init.decodingUTF8.UMBPSlice " ,
51
+ runFunction: run_UTF8Decode_InitDecodingUMBPSlice,
52
+ tags: [ . validation, . api, . String] ) ,
53
+ BenchmarkInfo (
54
+ name: " String.init.decodingUTF8.UBP " ,
55
+ runFunction: run_UTF8Decode_InitDecodingUBP,
56
+ tags: [ . validation, . api, . String] ) ,
57
+ BenchmarkInfo (
58
+ name: " String.init.decodingUTF8.UBPSlice " ,
59
+ runFunction: run_UTF8Decode_InitDecodingUBPSlice,
60
+ tags: [ . validation, . api, . String] ) ,
29
61
BenchmarkInfo (
30
62
name: " UTF8Decode_InitFromBytes " ,
31
63
runFunction: run_UTF8Decode_InitFromBytes,
@@ -62,6 +94,20 @@ let allStrings = [ascii, russian, japanese, emoji].map { Array($0.utf8) }
62
94
let allStringsBytes : [ UInt8 ] = Array ( allStrings. joined ( ) )
63
95
let allStringsData : Data = Data ( allStringsBytes)
64
96
97
+ func withAllStringsUMRBP( _ body: ( UnsafeMutableRawBufferPointer ) -> Void ) -> Void {
98
+ var all = allStringsBytes
99
+ all. withUnsafeMutableBytes ( body)
100
+ }
101
+ func withAllStringsURBP( _ body: ( UnsafeRawBufferPointer ) -> Void ) -> Void {
102
+ allStringsBytes. withUnsafeBytes ( body)
103
+ }
104
+ func withAllStringsUMBP( _ body: ( inout UnsafeMutableBufferPointer < UInt8 > ) -> Void ) -> Void {
105
+ var all = allStringsBytes
106
+ all. withUnsafeMutableBufferPointer ( body)
107
+ }
108
+ func withAllStringsUBP( _ body: ( UnsafeBufferPointer < UInt8 > ) -> Void ) -> Void {
109
+ allStringsBytes. withUnsafeBufferPointer ( body)
110
+ }
65
111
66
112
@inline ( never)
67
113
public func run_UTF8Decode( _ N: Int ) {
@@ -107,6 +153,72 @@ public func run_UTF8Decode_InitFromBytes(_ N: Int) {
107
153
}
108
154
}
109
155
156
+ @inline ( never)
157
+ public func run_UTF8Decode_InitDecodingUMRBP( _ N: Int ) {
158
+ withAllStringsUMRBP { ( input: UnsafeMutableRawBufferPointer ) in
159
+ for _ in 0 ..< 500 * N {
160
+ blackHole ( String ( decoding: input, as: UTF8 . self) )
161
+ }
162
+ }
163
+ }
164
+ @inline ( never)
165
+ public func run_UTF8Decode_InitDecodingUMRBPSlice( _ N: Int ) {
166
+ withAllStringsUMRBP { ( input: UnsafeMutableRawBufferPointer ) in
167
+ for _ in 0 ..< N {
168
+ blackHole ( String ( decoding: input [ ... ] , as: UTF8 . self) )
169
+ }
170
+ }
171
+ }
172
+ @inline ( never)
173
+ public func run_UTF8Decode_InitDecodingURBP( _ N: Int ) {
174
+ withAllStringsURBP { ( input: UnsafeRawBufferPointer ) in
175
+ for _ in 0 ..< 500 * N {
176
+ blackHole ( String ( decoding: input, as: UTF8 . self) )
177
+ }
178
+ }
179
+ }
180
+ @inline ( never)
181
+ public func run_UTF8Decode_InitDecodingURBPSlice( _ N: Int ) {
182
+ withAllStringsURBP { ( input: UnsafeRawBufferPointer ) in
183
+ for _ in 0 ..< N {
184
+ blackHole ( String ( decoding: input [ ... ] , as: UTF8 . self) )
185
+ }
186
+ }
187
+ }
188
+
189
+ @inline ( never)
190
+ public func run_UTF8Decode_InitDecodingUMBP( _ N: Int ) {
191
+ withAllStringsUMBP { ( input: inout UnsafeMutableBufferPointer < UInt8 > ) in
192
+ for _ in 0 ..< 500 * N {
193
+ blackHole ( String ( decoding: input, as: UTF8 . self) )
194
+ }
195
+ }
196
+ }
197
+ @inline ( never)
198
+ public func run_UTF8Decode_InitDecodingUMBPSlice( _ N: Int ) {
199
+ withAllStringsUMBP { ( input: inout UnsafeMutableBufferPointer < UInt8 > ) in
200
+ for _ in 0 ..< N {
201
+ blackHole ( String ( decoding: input [ ... ] , as: UTF8 . self) )
202
+ }
203
+ }
204
+ }
205
+ @inline ( never)
206
+ public func run_UTF8Decode_InitDecodingUBP( _ N: Int ) {
207
+ withAllStringsUBP { ( input: UnsafeBufferPointer < UInt8 > ) in
208
+ for _ in 0 ..< 500 * N {
209
+ blackHole ( String ( decoding: input, as: UTF8 . self) )
210
+ }
211
+ }
212
+ }
213
+ @inline ( never)
214
+ public func run_UTF8Decode_InitDecodingUBPSlice( _ N: Int ) {
215
+ withAllStringsUBP { ( input: UnsafeBufferPointer < UInt8 > ) in
216
+ for _ in 0 ..< N {
217
+ blackHole ( String ( decoding: input [ ... ] , as: UTF8 . self) )
218
+ }
219
+ }
220
+ }
221
+
110
222
@inline ( never)
111
223
public func run_UTF8Decode_InitFromData_ascii( _ N: Int ) {
112
224
let input = asciiData
0 commit comments