@@ -27,8 +27,20 @@ public let ObjectiveCBridgingStubs = [
27
27
BenchmarkInfo ( name: " ObjectiveCBridgeStubToNSDate2 " , runFunction: run_ObjectiveCBridgeStubToNSDate, tags: [ . validation, . bridging] ) ,
28
28
BenchmarkInfo ( name: " ObjectiveCBridgeStubToNSString " , runFunction: run_ObjectiveCBridgeStubToNSString, tags: [ . validation, . bridging] ) ,
29
29
BenchmarkInfo ( name: " ObjectiveCBridgeStubURLAppendPath2 " , runFunction: run_ObjectiveCBridgeStubURLAppendPath, tags: [ . validation, . bridging] ) ,
30
+ BenchmarkInfo ( name: " ObjectiveCBridgeStringIsEqual " , runFunction: run_ObjectiveCBridgeStringIsEqual, tags: [ . validation, . String, . bridging] , setUpFunction: setup_StringBridgeBenchmark) ,
31
+ BenchmarkInfo ( name: " ObjectiveCBridgeStringIsEqual2 " , runFunction: run_ObjectiveCBridgeStringIsEqual2, tags: [ . validation, . String, . bridging] , setUpFunction: setup_StringBridgeBenchmark) ,
32
+ BenchmarkInfo ( name: " ObjectiveCBridgeStringIsEqualAllSwift " , runFunction: run_ObjectiveCBridgeStringIsEqualAllSwift, tags: [ . validation, . String, . bridging] , setUpFunction: setup_StringBridgeBenchmark) ,
33
+ BenchmarkInfo ( name: " ObjectiveCBridgeStringCompare " , runFunction: run_ObjectiveCBridgeStringCompare, tags: [ . validation, . String, . bridging] , setUpFunction: setup_StringBridgeBenchmark) ,
34
+ BenchmarkInfo ( name: " ObjectiveCBridgeStringCompare2 " , runFunction: run_ObjectiveCBridgeStringCompare2, tags: [ . validation, . String, . bridging] , setUpFunction: setup_StringBridgeBenchmark) ,
35
+ BenchmarkInfo ( name: " ObjectiveCBridgeStringGetASCIIContents " , runFunction: run_ObjectiveCBridgeStringGetASCIIContents, tags: [ . validation, . String, . bridging] , setUpFunction: setup_StringBridgeBenchmark) ,
36
+ BenchmarkInfo ( name: " ObjectiveCBridgeStringGetUTF8Contents " , runFunction: run_ObjectiveCBridgeStringGetUTF8Contents, tags: [ . validation, . String, . bridging] , setUpFunction: setup_StringBridgeBenchmark) ,
37
+ BenchmarkInfo ( name: " ObjectiveCBridgeStringRangeOfString " , runFunction: run_ObjectiveCBridgeStringRangeOfString, tags: [ . validation, . String, . bridging] , setUpFunction: setup_StringBridgeBenchmark) ,
38
+ BenchmarkInfo ( name: " ObjectiveCBridgeStringHash " , runFunction: run_ObjectiveCBridgeStringHash, tags: [ . validation, . String, . bridging] , setUpFunction: setup_StringBridgeBenchmark) ,
39
+ BenchmarkInfo ( name: " ObjectiveCBridgeStringUTF8String " , runFunction: run_ObjectiveCBridgeStringUTF8String, tags: [ . validation, . String, . bridging] , setUpFunction: setup_StringBridgeBenchmark) ,
30
40
]
31
41
42
+ var b : BridgeTester ! = nil
43
+
32
44
#if _runtime(_ObjC)
33
45
@inline ( never)
34
46
func testObjectiveCBridgeStubFromNSString( ) {
@@ -258,3 +270,127 @@ public func run_ObjectiveCBridgeStubDataAppend(N: Int) {
258
270
}
259
271
#endif
260
272
}
273
+
274
+ @inline ( never)
275
+ internal func getStringsToBridge( ) -> [ String ] {
276
+ let strings1 = [ " hello " , " the quick brown fox jumps over the lazy dog " , " the quick brown fox jumps over the lazy dög " ]
277
+ return strings1 + strings1. map { $0 + $0 } //mix of literals and non-literals
278
+ }
279
+
280
+ @inline ( never)
281
+ public func run_ObjectiveCBridgeStringIsEqual( N: Int ) {
282
+ #if _runtime(_ObjC)
283
+ for _ in 0 ..< N {
284
+ autoreleasepool {
285
+ b. testIsEqualToString ( )
286
+ }
287
+ }
288
+ #endif
289
+ }
290
+
291
+ @inline ( never)
292
+ public func run_ObjectiveCBridgeStringIsEqual2( N: Int ) {
293
+ #if _runtime(_ObjC)
294
+ for _ in 0 ..< N {
295
+ autoreleasepool {
296
+ b. testIsEqualToString2 ( )
297
+ }
298
+ }
299
+ #endif
300
+ }
301
+
302
+ @inline ( never)
303
+ public func run_ObjectiveCBridgeStringIsEqualAllSwift( N: Int ) {
304
+ #if _runtime(_ObjC)
305
+ for _ in 0 ..< N {
306
+ autoreleasepool {
307
+ b. testIsEqualToStringAllSwift ( )
308
+ }
309
+ }
310
+ #endif
311
+ }
312
+
313
+ @inline ( never)
314
+ public func run_ObjectiveCBridgeStringCompare( N: Int ) {
315
+ #if _runtime(_ObjC)
316
+ for _ in 0 ..< N {
317
+ autoreleasepool {
318
+ b. testCompare ( )
319
+ }
320
+ }
321
+ #endif
322
+ }
323
+
324
+ @inline ( never)
325
+ public func run_ObjectiveCBridgeStringCompare2( N: Int ) {
326
+ #if _runtime(_ObjC)
327
+ for _ in 0 ..< N {
328
+ autoreleasepool {
329
+ b. testCompare2 ( )
330
+ }
331
+ }
332
+ #endif
333
+ }
334
+
335
+ @inline ( never)
336
+ public func run_ObjectiveCBridgeStringGetASCIIContents( N: Int ) {
337
+ #if _runtime(_ObjC)
338
+ for _ in 0 ..< N {
339
+ autoreleasepool {
340
+ b. testGetASCIIContents ( )
341
+ }
342
+ }
343
+ #endif
344
+ }
345
+
346
+ @inline ( never)
347
+ public func run_ObjectiveCBridgeStringGetUTF8Contents( N: Int ) {
348
+ #if _runtime(_ObjC)
349
+ for _ in 0 ..< N {
350
+ autoreleasepool {
351
+ b. testGetUTF8Contents ( )
352
+ }
353
+ }
354
+ #endif
355
+ }
356
+
357
+ @inline ( never)
358
+ public func run_ObjectiveCBridgeStringRangeOfString( N: Int ) {
359
+ #if _runtime(_ObjC)
360
+ for _ in 0 ..< N {
361
+ autoreleasepool {
362
+ b. testRangeOfString ( )
363
+ }
364
+ }
365
+ #endif
366
+ }
367
+
368
+ @inline ( never)
369
+ public func run_ObjectiveCBridgeStringHash( N: Int ) {
370
+ #if _runtime(_ObjC)
371
+ for _ in 0 ..< N {
372
+ autoreleasepool {
373
+ b. testHash ( )
374
+ }
375
+ }
376
+ #endif
377
+ }
378
+
379
+ @inline ( never)
380
+ public func run_ObjectiveCBridgeStringUTF8String( N: Int ) {
381
+ #if _runtime(_ObjC)
382
+ for _ in 0 ..< N {
383
+ autoreleasepool {
384
+ b. testUTF8String ( )
385
+ }
386
+ }
387
+ #endif
388
+ }
389
+
390
+ @inline ( never)
391
+ public func setup_StringBridgeBenchmark( ) {
392
+ #if _runtime(_ObjC)
393
+ b = BridgeTester ( )
394
+ b. setUpStringTests ( getStringsToBridge ( ) )
395
+ #endif
396
+ }
0 commit comments