@@ -100,6 +100,24 @@ public let benchmarks = [
100
100
BenchmarkInfo ( name: " NSDictionary.bridged.enumerate " ,
101
101
runFunction: run_BridgedNSDictionaryEnumerate, tags: t,
102
102
setUpFunction: setup_bridgedDictionaries) ,
103
+ BenchmarkInfo ( name: " NSString.bridged.byteCount.ascii.ascii " ,
104
+ runFunction: run_BridgedNSStringLengthASCII_ASCII, tags: ts,
105
+ setUpFunction: setup_bridgedStrings) ,
106
+ BenchmarkInfo ( name: " NSString.bridged.byteCount.ascii.utf8 " ,
107
+ runFunction: run_BridgedNSStringLengthASCII_UTF8, tags: ts,
108
+ setUpFunction: setup_bridgedStrings) ,
109
+ BenchmarkInfo ( name: " NSString.bridged.byteCount.ascii.utf16 " ,
110
+ runFunction: run_BridgedNSStringLengthASCII_UTF16, tags: ts,
111
+ setUpFunction: setup_bridgedStrings) ,
112
+ BenchmarkInfo ( name: " NSString.bridged.byteCount.ascii.macroman " ,
113
+ runFunction: run_BridgedNSStringLengthASCII_MacRoman, tags: ts,
114
+ setUpFunction: setup_bridgedStrings) ,
115
+ BenchmarkInfo ( name: " NSString.bridged.byteCount.utf8.utf8 " ,
116
+ runFunction: run_BridgedNSStringLengthUTF8_UTF8, tags: ts,
117
+ setUpFunction: setup_bridgedStrings) ,
118
+ BenchmarkInfo ( name: " NSString.bridged.byteCount.utf8.utf16 " ,
119
+ runFunction: run_BridgedNSStringLengthUTF8_UTF16, tags: ts,
120
+ setUpFunction: setup_bridgedStrings) ,
103
121
]
104
122
105
123
#if _runtime(_ObjC)
@@ -801,6 +819,8 @@ var bridgedDictionaryOfNumbersToNumbers:NSDictionary! = nil
801
819
var bridgedArrayMutableCopy : NSMutableArray ! = nil
802
820
var nsArray : NSArray ! = nil
803
821
var nsArrayMutableCopy : NSMutableArray ! = nil
822
+ var bridgedASCIIString : NSString ! = nil
823
+ var bridgedUTF8String : NSString ! = nil
804
824
#endif
805
825
806
826
public func setup_bridgedArrays( ) {
@@ -822,6 +842,14 @@ public func setup_bridgedDictionaries() {
822
842
bridgedDictionaryOfNumbersToNumbers = numDict as NSDictionary
823
843
}
824
844
845
+ public func setup_bridgedStrings( ) {
846
+ #if _runtime(_ObjC)
847
+ let str = Array ( repeating: " The quick brown fox jumps over the lazy dog. " , count: 100 ) . joined ( )
848
+ bridgedASCIIString = str as NSString
849
+ let str2 = Array ( repeating: " The quick brown fox jumps over the lazy dög. " , count: 100 ) . joined ( )
850
+ bridgedUTF8String = str2 as NSString
851
+ #endif
852
+ }
825
853
826
854
@inline ( never)
827
855
public func run_BridgedNSArrayObjectAtIndex( _ n: Int ) {
@@ -914,3 +942,40 @@ public func run_RealNSArrayMutableCopyObjectAtIndex(_ n: Int) {
914
942
#endif
915
943
}
916
944
945
+ @inline ( __always)
946
+ fileprivate func run_BridgedNSStringLength( _ asciiBase: Bool , _ enc: UInt , _ n: Int ) {
947
+ let str = asciiBase ? bridgedASCIIString : bridgedUTF8String
948
+ for _ in 0 ..< n * 100 {
949
+ blackHole ( str!. lengthOfBytes ( using: enc) )
950
+ }
951
+ }
952
+
953
+ @inline ( never)
954
+ public func run_BridgedNSStringLengthASCII_ASCII( _ n: Int ) {
955
+ run_BridgedNSStringLength ( true , 1 /* NSASCIIStringEncoding */, n)
956
+ }
957
+
958
+ @inline ( never)
959
+ public func run_BridgedNSStringLengthASCII_UTF8( _ n: Int ) {
960
+ run_BridgedNSStringLength ( true , 4 /* NSUTF8StringEncoding */, n)
961
+ }
962
+
963
+ @inline ( never)
964
+ public func run_BridgedNSStringLengthASCII_UTF16( _ n: Int ) {
965
+ run_BridgedNSStringLength ( true , 10 /* NSUnicodeStringEncoding */, n)
966
+ }
967
+
968
+ @inline ( never)
969
+ public func run_BridgedNSStringLengthASCII_MacRoman( _ n: Int ) {
970
+ run_BridgedNSStringLength ( true , 30 /* NSMacOSRomanStringEncoding */, n)
971
+ }
972
+
973
+ @inline ( never)
974
+ public func run_BridgedNSStringLengthUTF8_UTF8( _ n: Int ) {
975
+ run_BridgedNSStringLength ( false , 4 /* NSUTF8StringEncoding */, n)
976
+ }
977
+
978
+ @inline ( never)
979
+ public func run_BridgedNSStringLengthUTF8_UTF16( _ n: Int ) {
980
+ run_BridgedNSStringLength ( false , 10 /* NSUnicodeStringEncoding */, n)
981
+ }
0 commit comments