11
11
//===----------------------------------------------------------------------===//
12
12
13
13
import TestsUtils
14
- public let ArrayInClass = BenchmarkInfo (
15
- name: " ArrayInClass " ,
16
- runFunction: run_ArrayInClass,
17
- tags: [ . validation, . api, . Array] ,
18
- setUpFunction: { ac = ArrayContainer ( ) } ,
19
- tearDownFunction: { ac = nil } )
14
+ public let ArrayInClass = [
15
+ BenchmarkInfo (
16
+ name: " ArrayInClass " ,
17
+ runFunction: run_ArrayInClass,
18
+ tags: [ . validation, . api, . Array] ,
19
+ setUpFunction: { ac = ArrayContainer ( ) } ,
20
+ tearDownFunction: { ac = nil } ) ,
21
+ BenchmarkInfo ( name: " DistinctClassFieldAccesses " ,
22
+ runFunction: run_DistinctClassFieldAccesses,
23
+ tags: [ . unstable, . api, . Array] ,
24
+ setUpFunction: { workload = ClassWithArrs ( N: 100_000 ) } ,
25
+ tearDownFunction: { workload = nil } ) ,
26
+ ]
20
27
21
28
var ac : ArrayContainer !
22
29
@@ -41,3 +48,38 @@ public func run_ArrayInClass(_ N: Int) {
41
48
let a = ac!
42
49
a. runLoop ( N)
43
50
}
51
+
52
+ class ClassWithArrs {
53
+ var N : Int = 0
54
+ var A : [ Int ]
55
+ var B : [ Int ]
56
+
57
+ init ( N: Int ) {
58
+ self . N = N
59
+
60
+ A = [ Int] ( repeating: 0 , count: N)
61
+ B = [ Int] ( repeating: 0 , count: N)
62
+ }
63
+
64
+ func readArr( ) {
65
+ for i in 0 ..< self . N {
66
+ guard A [ i] == B [ i] else { fatalError ( " " ) }
67
+ }
68
+ }
69
+
70
+ func writeArr( ) {
71
+ for i in 0 ..< self . N {
72
+ A [ i] = i
73
+ B [ i] = i
74
+ }
75
+ }
76
+ }
77
+
78
+ var workload : ClassWithArrs !
79
+
80
+ public func run_DistinctClassFieldAccesses( _ N: Int ) {
81
+ for _ in 1 ... N {
82
+ workload. writeArr ( )
83
+ workload. readArr ( )
84
+ }
85
+ }
0 commit comments