@@ -18,6 +18,7 @@ import ObjectiveCTests
1818
1919let t : [ BenchmarkCategory ] = [ . validation, . bridging]
2020let ts : [ BenchmarkCategory ] = [ . validation, . String, . bridging]
21+ let bs : [ BenchmarkCategory ] = [ . String, . bridging]
2122
2223public let ObjectiveCBridgingStubs = [
2324 BenchmarkInfo ( name: " ObjectiveCBridgeStubDataAppend " ,
@@ -68,9 +69,24 @@ public let ObjectiveCBridgingStubs = [
6869 BenchmarkInfo ( name: " ObjectiveCBridgeStringGetUTF8Contents " ,
6970 runFunction: run_ObjectiveCBridgeStringGetUTF8Contents, tags: ts,
7071 setUpFunction: setup_StringBridgeBenchmark) ,
71- BenchmarkInfo ( name: " ObjectiveCBridgeStringRangeOfString " ,
72+ BenchmarkInfo ( name: " ObjectiveCBridgeStringRangeOfString " , //should be BridgeString.find.mixed
7273 runFunction: run_ObjectiveCBridgeStringRangeOfString, tags: ts,
7374 setUpFunction: setup_StringBridgeBenchmark) ,
75+ BenchmarkInfo ( name: " BridgeString.find.native " ,
76+ runFunction: run_ObjectiveCBridgeStringRangeOfStringAllSwift, tags: bs,
77+ setUpFunction: setup_SpecificRangeOfStringBridging) ,
78+ BenchmarkInfo ( name: " BridgeString.find.native.nonASCII " ,
79+ runFunction: run_ObjectiveCBridgeStringRangeOfStringAllSwiftNonASCII, tags: bs,
80+ setUpFunction: setup_SpecificRangeOfStringBridging) ,
81+ BenchmarkInfo ( name: " BridgeString.find.native.long " ,
82+ runFunction: run_ObjectiveCBridgeStringRangeOfStringAllSwiftLongHaystack, tags: bs,
83+ setUpFunction: setup_SpecificRangeOfStringBridging) ,
84+ BenchmarkInfo ( name: " BridgeString.find.native.longBoth " ,
85+ runFunction: run_ObjectiveCBridgeStringRangeOfStringAllSwiftLongHaystackLongNeedle, tags: bs,
86+ setUpFunction: setup_SpecificRangeOfStringBridging) ,
87+ BenchmarkInfo ( name: " BridgeString.find.native.longNonASCII " ,
88+ runFunction: run_ObjectiveCBridgeStringRangeOfStringAllSwiftLongHaystackNonASCII, tags: bs,
89+ setUpFunction: setup_SpecificRangeOfStringBridging) ,
7490 BenchmarkInfo ( name: " ObjectiveCBridgeStringHash " ,
7591 runFunction: run_ObjectiveCBridgeStringHash, tags: ts,
7692 setUpFunction: setup_StringBridgeBenchmark) ,
@@ -408,6 +424,47 @@ public func run_ObjectiveCBridgeStringRangeOfString(N: Int) {
408424 #endif
409425}
410426
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: 100 * 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: 100 * 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+
411468@inline ( never)
412469public func run_ObjectiveCBridgeStringHash( N: Int ) {
413470 #if _runtime(_ObjC)
0 commit comments