@@ -18,6 +18,7 @@ import ObjectiveCTests
18
18
19
19
let t : [ BenchmarkCategory ] = [ . validation, . bridging]
20
20
let ts : [ BenchmarkCategory ] = [ . validation, . String, . bridging]
21
+ let bs : [ BenchmarkCategory ] = [ . String, . bridging]
21
22
22
23
public let ObjectiveCBridgingStubs = [
23
24
BenchmarkInfo ( name: " ObjectiveCBridgeStubDataAppend " ,
@@ -71,6 +72,21 @@ public let ObjectiveCBridgingStubs = [
71
72
BenchmarkInfo ( name: " ObjectiveCBridgeStringRangeOfString " ,
72
73
runFunction: run_ObjectiveCBridgeStringRangeOfString, tags: ts,
73
74
setUpFunction: setup_StringBridgeBenchmark) ,
75
+ BenchmarkInfo ( name: " ObjectiveCBridgeStringRangeOfStringAllSwift " ,
76
+ runFunction: run_ObjectiveCBridgeStringRangeOfStringAllSwift, tags: bs,
77
+ setUpFunction: setup_SpecificRangeOfStringBridging) ,
78
+ BenchmarkInfo ( name: " ObjectiveCBridgeStringRangeOfStringAllSwiftNonASCII " ,
79
+ runFunction: run_ObjectiveCBridgeStringRangeOfStringAllSwiftNonASCII, tags: bs,
80
+ setUpFunction: setup_SpecificRangeOfStringBridging) ,
81
+ BenchmarkInfo ( name: " ObjectiveCBridgeStringRangeOfStringAllSwiftLongHaystack " ,
82
+ runFunction: run_ObjectiveCBridgeStringRangeOfStringAllSwiftLongHaystack, tags: bs,
83
+ setUpFunction: setup_SpecificRangeOfStringBridging) ,
84
+ BenchmarkInfo ( name: " ObjectiveCBridgeStringRangeOfStringAllSwiftLongHaystackLongNeedle " ,
85
+ runFunction: run_ObjectiveCBridgeStringRangeOfStringAllSwiftLongHaystackLongNeedle, tags: bs,
86
+ setUpFunction: setup_SpecificRangeOfStringBridging) ,
87
+ BenchmarkInfo ( name: " ObjectiveCBridgeStringRangeOfStringAllSwiftLongHaystackNonASCII " ,
88
+ runFunction: run_ObjectiveCBridgeStringRangeOfStringAllSwiftLongHaystackNonASCII, tags: bs,
89
+ setUpFunction: setup_SpecificRangeOfStringBridging) ,
74
90
BenchmarkInfo ( name: " ObjectiveCBridgeStringHash " ,
75
91
runFunction: run_ObjectiveCBridgeStringHash, tags: ts,
76
92
setUpFunction: setup_StringBridgeBenchmark) ,
@@ -408,6 +424,47 @@ public func run_ObjectiveCBridgeStringRangeOfString(N: Int) {
408
424
#endif
409
425
}
410
426
427
+ @inline ( __always)
428
+ func run_rangeOfStringSpecific( needle: String , haystack: String , N: Int ) {
429
+ #if _runtime(_ObjC)
430
+ b. testRangeOfStringSpecific ( withNeedle: needle, haystack: haystack, n: N)
431
+ #endif
432
+ }
433
+
434
+ @inline ( never)
435
+ public func run_ObjectiveCBridgeStringRangeOfStringAllSwift( N: Int ) {
436
+ run_rangeOfStringSpecific ( needle: " y " , haystack: " The quick brown fox jumps over the lazy dog " , N: N)
437
+ }
438
+
439
+ var longNativeASCII : String ! = nil
440
+ var longNativeNonASCII : String ! = nil
441
+ public func setup_SpecificRangeOfStringBridging( ) {
442
+ setup_StringBridgeBenchmark ( )
443
+ longNativeASCII = Array ( repeating: " The quick brown fox jump over the lazy dog " , count: 1000 ) . joined ( ) + " s "
444
+ longNativeNonASCII = " ü " + longNativeASCII + " ö "
445
+
446
+ }
447
+
448
+ @inline ( never)
449
+ public func run_ObjectiveCBridgeStringRangeOfStringAllSwiftLongHaystack( N: Int ) {
450
+ run_rangeOfStringSpecific ( needle: " s " , haystack: longNativeASCII, N: N)
451
+ }
452
+
453
+ @inline ( never)
454
+ public func run_ObjectiveCBridgeStringRangeOfStringAllSwiftLongHaystackNonASCII( N: Int ) {
455
+ run_rangeOfStringSpecific ( needle: " s " , haystack: longNativeNonASCII, N: N)
456
+ }
457
+
458
+ @inline ( never)
459
+ public func run_ObjectiveCBridgeStringRangeOfStringAllSwiftNonASCII( N: Int ) {
460
+ run_rangeOfStringSpecific ( needle: " ü " , haystack: " The quick brown fox jump over the lazy dogü " , N: N)
461
+ }
462
+
463
+ @inline ( never)
464
+ public func run_ObjectiveCBridgeStringRangeOfStringAllSwiftLongHaystackLongNeedle( N: Int ) {
465
+ run_rangeOfStringSpecific ( needle: " The quick brown fox jump over the lazy dogs " , haystack: longNativeASCII, N: N)
466
+ }
467
+
411
468
@inline ( never)
412
469
public func run_ObjectiveCBridgeStringHash( N: Int ) {
413
470
#if _runtime(_ObjC)
0 commit comments