13
13
import TestsUtils
14
14
import Foundation
15
15
16
+ let t : [ BenchmarkCategory ] = [ . validation, . bridging]
17
+ let ts : [ BenchmarkCategory ] = [ . validation, . bridging, . String]
18
+
16
19
public let ObjectiveCBridging = [
17
- BenchmarkInfo ( name: " ObjectiveCBridgeFromNSString " , runFunction: run_ObjectiveCBridgeFromNSString, tags: [ . validation, . bridging] ) ,
18
- BenchmarkInfo ( name: " ObjectiveCBridgeFromNSStringForced " , runFunction: run_ObjectiveCBridgeFromNSStringForced, tags: [ . validation, . bridging] ) ,
19
- BenchmarkInfo ( name: " ObjectiveCBridgeToNSString " , runFunction: run_ObjectiveCBridgeToNSString, tags: [ . validation, . bridging] ) ,
20
- BenchmarkInfo ( name: " ObjectiveCBridgeFromNSArrayAnyObject " , runFunction: run_ObjectiveCBridgeFromNSArrayAnyObject, tags: [ . validation, . bridging] ) ,
21
- BenchmarkInfo ( name: " ObjectiveCBridgeFromNSArrayAnyObjectForced " , runFunction: run_ObjectiveCBridgeFromNSArrayAnyObjectForced, tags: [ . validation, . bridging] ) ,
22
- BenchmarkInfo ( name: " ObjectiveCBridgeToNSArray " , runFunction: run_ObjectiveCBridgeToNSArray, tags: [ . validation, . bridging] ) ,
23
- BenchmarkInfo ( name: " ObjectiveCBridgeFromNSArrayAnyObjectToString " , runFunction: run_ObjectiveCBridgeFromNSArrayAnyObjectToString, tags: [ . validation, . bridging, . String] ) ,
24
- BenchmarkInfo ( name: " ObjectiveCBridgeFromNSArrayAnyObjectToStringForced " , runFunction: run_ObjectiveCBridgeFromNSArrayAnyObjectToStringForced, tags: [ . validation, . bridging, . String] ) ,
25
- BenchmarkInfo ( name: " ObjectiveCBridgeFromNSDictionaryAnyObject " , runFunction: run_ObjectiveCBridgeFromNSDictionaryAnyObject, tags: [ . validation, . bridging] ) ,
26
- BenchmarkInfo ( name: " ObjectiveCBridgeFromNSDictionaryAnyObjectForced " , runFunction: run_ObjectiveCBridgeFromNSDictionaryAnyObjectForced, tags: [ . validation, . bridging, . unstable] ) ,
27
- BenchmarkInfo ( name: " ObjectiveCBridgeToNSDictionary " , runFunction: run_ObjectiveCBridgeToNSDictionary, tags: [ . validation, . bridging] ) ,
28
- BenchmarkInfo ( name: " ObjectiveCBridgeFromNSDictionaryAnyObjectToString " , runFunction: run_ObjectiveCBridgeFromNSDictionaryAnyObjectToString, tags: [ . validation, . bridging, . String, . unstable] ) ,
29
- BenchmarkInfo ( name: " ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced " , runFunction: run_ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced, tags: [ . validation, . bridging, . String, . unstable] ) ,
30
- BenchmarkInfo ( name: " ObjectiveCBridgeFromNSSetAnyObject " , runFunction: run_ObjectiveCBridgeFromNSSetAnyObject, tags: [ . validation, . bridging] ) ,
31
- BenchmarkInfo ( name: " ObjectiveCBridgeFromNSSetAnyObjectForced " , runFunction: run_ObjectiveCBridgeFromNSSetAnyObjectForced, tags: [ . validation, . bridging] ) ,
32
- BenchmarkInfo ( name: " ObjectiveCBridgeToNSSet " , runFunction: run_ObjectiveCBridgeToNSSet, tags: [ . validation, . bridging] ) ,
33
- BenchmarkInfo ( name: " ObjectiveCBridgeFromNSSetAnyObjectToString " , runFunction: run_ObjectiveCBridgeFromNSSetAnyObjectToString, tags: [ . validation, . bridging, . String] ) ,
34
- BenchmarkInfo ( name: " ObjectiveCBridgeFromNSSetAnyObjectToStringForced " , runFunction: run_ObjectiveCBridgeFromNSSetAnyObjectToStringForced, tags: [ . validation, . bridging, . String, . unstable] ) ,
35
- BenchmarkInfo ( name: " ObjectiveCBridgeFromNSDateComponents " , runFunction: run_ObjectiveCBridgeFromNSDateComponents, tags: [ . validation, . bridging] , setUpFunction: setup_dateComponents)
20
+ BenchmarkInfo ( name: " ObjectiveCBridgeFromNSString " ,
21
+ runFunction: run_ObjectiveCBridgeFromNSString, tags: t,
22
+ legacyFactor: 5 ) ,
23
+ BenchmarkInfo ( name: " ObjectiveCBridgeFromNSStringForced " ,
24
+ runFunction: run_ObjectiveCBridgeFromNSStringForced, tags: t,
25
+ legacyFactor: 5 ) ,
26
+ BenchmarkInfo ( name: " ObjectiveCBridgeToNSString " ,
27
+ runFunction: run_ObjectiveCBridgeToNSString, tags: t) ,
28
+ BenchmarkInfo ( name: " ObjectiveCBridgeFromNSArrayAnyObject " ,
29
+ runFunction: run_ObjectiveCBridgeFromNSArrayAnyObject, tags: t,
30
+ legacyFactor: 100 ) ,
31
+ BenchmarkInfo ( name: " ObjectiveCBridgeFromNSArrayAnyObjectForced " ,
32
+ runFunction: run_ObjectiveCBridgeFromNSArrayAnyObjectForced, tags: t,
33
+ legacyFactor: 20 ) ,
34
+ BenchmarkInfo ( name: " ObjectiveCBridgeToNSArray " ,
35
+ runFunction: run_ObjectiveCBridgeToNSArray, tags: t,
36
+ legacyFactor: 50 ) ,
37
+ BenchmarkInfo ( name: " ObjectiveCBridgeFromNSArrayAnyObjectToString " ,
38
+ runFunction: run_ObjectiveCBridgeFromNSArrayAnyObjectToString, tags: ts,
39
+ legacyFactor: 100 ) ,
40
+ BenchmarkInfo ( name: " ObjectiveCBridgeFromNSArrayAnyObjectToStringForced " ,
41
+ runFunction: run_ObjectiveCBridgeFromNSArrayAnyObjectToStringForced,
42
+ tags: ts, legacyFactor: 200 ) ,
43
+ BenchmarkInfo ( name: " ObjectiveCBridgeFromNSDictionaryAnyObject " ,
44
+ runFunction: run_ObjectiveCBridgeFromNSDictionaryAnyObject, tags: t,
45
+ legacyFactor: 100 ) ,
46
+ BenchmarkInfo ( name: " ObjectiveCBridgeFromNSDictionaryAnyObjectForced " ,
47
+ runFunction: run_ObjectiveCBridgeFromNSDictionaryAnyObjectForced, tags: t,
48
+ legacyFactor: 50 ) ,
49
+ BenchmarkInfo ( name: " ObjectiveCBridgeToNSDictionary " ,
50
+ runFunction: run_ObjectiveCBridgeToNSDictionary, tags: t,
51
+ legacyFactor: 50 ) ,
52
+ BenchmarkInfo ( name: " ObjectiveCBridgeFromNSDictionaryAnyObjectToString " ,
53
+ runFunction: run_ObjectiveCBridgeFromNSDictionaryAnyObjectToString,
54
+ tags: ts, legacyFactor: 500 ) ,
55
+ BenchmarkInfo ( name: " ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced " ,
56
+ runFunction: run_ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced,
57
+ tags: ts, legacyFactor: 500 ) ,
58
+ BenchmarkInfo ( name: " ObjectiveCBridgeFromNSSetAnyObject " ,
59
+ runFunction: run_ObjectiveCBridgeFromNSSetAnyObject, tags: t,
60
+ legacyFactor: 200 ) ,
61
+ BenchmarkInfo ( name: " ObjectiveCBridgeFromNSSetAnyObjectForced " ,
62
+ runFunction: run_ObjectiveCBridgeFromNSSetAnyObjectForced, tags: t,
63
+ legacyFactor: 20 ) ,
64
+ BenchmarkInfo ( name: " ObjectiveCBridgeToNSSet " ,
65
+ runFunction: run_ObjectiveCBridgeToNSSet, tags: t,
66
+ legacyFactor: 50 ) ,
67
+ BenchmarkInfo ( name: " ObjectiveCBridgeFromNSSetAnyObjectToString " ,
68
+ runFunction: run_ObjectiveCBridgeFromNSSetAnyObjectToString, tags: ts,
69
+ legacyFactor: 500 ) ,
70
+ BenchmarkInfo ( name: " ObjectiveCBridgeFromNSSetAnyObjectToStringForced " ,
71
+ runFunction: run_ObjectiveCBridgeFromNSSetAnyObjectToStringForced, tags: ts,
72
+ legacyFactor: 500 ) ,
73
+ BenchmarkInfo ( name: " ObjectiveCBridgeFromNSDateComponents " ,
74
+ runFunction: run_ObjectiveCBridgeFromNSDateComponents, tags: t,
75
+ setUpFunction: setup_dateComponents) ,
36
76
]
37
77
38
78
#if _runtime(_ObjC)
@@ -60,7 +100,7 @@ func testObjectiveCBridgeFromNSString() {
60
100
let nsString = createNSString ( )
61
101
62
102
var s : String ?
63
- for _ in 0 ..< 10_000 {
103
+ for _ in 0 ..< 2_000 {
64
104
// Call _conditionallyBridgeFromObjectiveC.
65
105
let n : String ? = conditionalCast ( nsString)
66
106
if n != nil {
@@ -88,7 +128,7 @@ func testObjectiveCBridgeFromNSStringForced() {
88
128
let nsString = createNSString ( )
89
129
90
130
var s : String ?
91
- for _ in 0 ..< 10_000 {
131
+ for _ in 0 ..< 2_000 {
92
132
// Call _forceBridgeFromObjectiveC
93
133
s = forcedCast ( nsString)
94
134
}
@@ -157,7 +197,7 @@ func testObjectiveCBridgeFromNSArrayAnyObject() {
157
197
let nsArray = createNSArray ( )
158
198
159
199
var nativeString : String ?
160
- for _ in 0 ..< 10_000 {
200
+ for _ in 0 ..< 100 {
161
201
if let nativeArray : [ NSString ] = conditionalCast ( nsArray) {
162
202
nativeString = forcedCast ( nativeArray [ 0 ] )
163
203
}
@@ -183,7 +223,7 @@ func testObjectiveCBridgeFromNSArrayAnyObjectForced() {
183
223
let nsArray = createNSArray ( )
184
224
185
225
var nativeString : String ?
186
- for _ in 0 ..< 10_000 {
226
+ for _ in 0 ..< 500 {
187
227
let nativeArray : [ NSString ] = forcedCast ( nsArray)
188
228
nativeString = forcedCast ( nativeArray [ 0 ] )
189
229
}
@@ -209,7 +249,7 @@ func testObjectiveCBridgeToNSArray() {
209
249
" abcde " , " abcde " , " abcde " , " abcde " , " abcde " ]
210
250
211
251
var nsString : Any ?
212
- for _ in 0 ..< 10_000 {
252
+ for _ in 0 ..< 200 {
213
253
let nsArray = nativeArray as NSArray
214
254
nsString = nsArray. object ( at: 0 )
215
255
}
@@ -234,7 +274,7 @@ func testObjectiveCBridgeFromNSArrayAnyObjectToString() {
234
274
let nsArray = createNSArray ( )
235
275
236
276
var nativeString : String ?
237
- for _ in 0 ..< 10_000 {
277
+ for _ in 0 ..< 100 {
238
278
if let nativeArray : [ String ] = conditionalCast ( nsArray) {
239
279
nativeString = nativeArray [ 0 ]
240
280
}
@@ -260,7 +300,7 @@ func testObjectiveCBridgeFromNSArrayAnyObjectToStringForced() {
260
300
let nsArray = createNSArray ( )
261
301
262
302
var nativeString : String ?
263
- for _ in 0 ..< 10_000 {
303
+ for _ in 0 ..< 50 {
264
304
let nativeArray : [ String ] = forcedCast ( nsArray)
265
305
nativeString = nativeArray [ 0 ]
266
306
}
@@ -314,7 +354,7 @@ func testObjectiveCBridgeFromNSDictionaryAnyObject() {
314
354
let nsString = NSString ( cString: " NSString that does not fit in tagged pointer " , encoding: String . Encoding. utf8. rawValue) !
315
355
316
356
var nativeInt : Int ?
317
- for _ in 0 ..< 10_000 {
357
+ for _ in 0 ..< 100 {
318
358
if let nativeDictionary : [ NSString : NSNumber ] = conditionalCast ( nsDictionary) {
319
359
nativeInt = forcedCast ( nativeDictionary [ nsString] )
320
360
}
@@ -341,7 +381,7 @@ func testObjectiveCBridgeFromNSDictionaryAnyObjectForced() {
341
381
let nsString = NSString ( cString: " NSString that does not fit in tagged pointer " , encoding: String . Encoding. utf8. rawValue) !
342
382
343
383
var nativeInt : Int ?
344
- for _ in 0 ..< 10_000 {
384
+ for _ in 0 ..< 200 {
345
385
if let nativeDictionary : [ NSString : NSNumber ] = forcedCast ( nsDictionary) {
346
386
nativeInt = forcedCast ( nativeDictionary [ nsString] )
347
387
}
@@ -370,7 +410,7 @@ func testObjectiveCBridgeToNSDictionary() {
370
410
let key = " abcde1 " as NSString
371
411
372
412
var nsNumber : Any ?
373
- for _ in 0 ..< 10_000 {
413
+ for _ in 0 ..< 200 {
374
414
let nsDict = nativeDictionary as NSDictionary
375
415
nsNumber = nsDict. object ( forKey: key)
376
416
}
@@ -397,7 +437,7 @@ func testObjectiveCBridgeFromNSDictionaryAnyObjectToString() {
397
437
let nativeString = nsString as String
398
438
399
439
var nativeInt : Int ?
400
- for _ in 0 ..< 10_000 {
440
+ for _ in 0 ..< 20 {
401
441
if let nativeDictionary : [ String : Int ] = conditionalCast ( nsDictionary) {
402
442
nativeInt = nativeDictionary [ nativeString]
403
443
}
@@ -425,7 +465,7 @@ func testObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced() {
425
465
let nativeString = nsString as String
426
466
427
467
var nativeInt : Int ?
428
- for _ in 0 ..< 10_000 {
468
+ for _ in 0 ..< 20 {
429
469
if let nativeDictionary : [ String : Int ] = forcedCast ( nsDictionary) {
430
470
nativeInt = nativeDictionary [ nativeString]
431
471
}
@@ -481,7 +521,7 @@ func testObjectiveCBridgeFromNSSetAnyObject() {
481
521
let nsString = NSString ( cString: " NSString that does not fit in tagged pointer " , encoding: String . Encoding. utf8. rawValue) !
482
522
483
523
var result : Bool ?
484
- for _ in 0 ..< 10_000 {
524
+ for _ in 0 ..< 50 {
485
525
if let nativeSet : Set < NSString > = conditionalCast ( nsSet) {
486
526
result = nativeSet. contains ( nsString)
487
527
}
@@ -508,7 +548,7 @@ func testObjectiveCBridgeFromNSSetAnyObjectForced() {
508
548
let nsString = NSString ( cString: " NSString that does not fit in tagged pointer " , encoding: String . Encoding. utf8. rawValue) !
509
549
510
550
var result : Bool ?
511
- for _ in 0 ..< 10_000 {
551
+ for _ in 0 ..< 500 {
512
552
if let nativeSet : Set < NSString > = forcedCast ( nsSet) {
513
553
result = nativeSet. contains ( nsString)
514
554
}
@@ -536,7 +576,7 @@ func testObjectiveCBridgeToNSSet() {
536
576
let key = " abcde1 " as NSString
537
577
538
578
var nsString : Any ?
539
- for _ in 0 ..< 10_000 {
579
+ for _ in 0 ..< 200 {
540
580
let nsDict = nativeSet as NSSet
541
581
nsString = nsDict. member ( key)
542
582
}
@@ -563,7 +603,7 @@ func testObjectiveCBridgeFromNSSetAnyObjectToString() {
563
603
let nsSet = createNSSet ( )
564
604
565
605
var result : Bool ?
566
- for _ in 0 ..< 10_000 {
606
+ for _ in 0 ..< 20 {
567
607
if let nativeSet : Set < String > = conditionalCast ( nsSet) {
568
608
result = nativeSet. contains ( nativeString)
569
609
}
@@ -591,7 +631,7 @@ func testObjectiveCBridgeFromNSSetAnyObjectToStringForced() {
591
631
let nativeString = nsString as String
592
632
593
633
var result : Bool ?
594
- for _ in 0 ..< 10_000 {
634
+ for _ in 0 ..< 20 {
595
635
if let nativeSet : Set < String > = forcedCast ( nsSet) {
596
636
result = nativeSet. contains ( nativeString)
597
637
}
@@ -616,15 +656,15 @@ public func run_ObjectiveCBridgeFromNSSetAnyObjectToStringForced(_ N: Int) {
616
656
//translated directly from an objc part of the original testcase
617
657
@objc class DictionaryContainer : NSObject {
618
658
@objc var _dictionary : NSDictionary
619
-
659
+
620
660
//simulate an objc property being imported via bridging
621
661
@objc var dictionary : Dictionary < DateComponents , String > {
622
662
@inline ( never)
623
663
get {
624
664
return _dictionary as! Dictionary < DateComponents , String >
625
665
}
626
666
}
627
-
667
+
628
668
override init ( ) {
629
669
_dictionary = NSDictionary ( )
630
670
super. init ( )
@@ -653,7 +693,7 @@ public func setup_dateComponents() {
653
693
guard let date = calendar. date ( byAdding: . day, value: - day, to: now) else {
654
694
return nil
655
695
}
656
-
696
+
657
697
return calendar. dateComponents ( [ . year, . month, . day] , from: date)
658
698
}
659
699
#endif
0 commit comments