1111//===----------------------------------------------------------------------===//
1212
1313import 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+ ]
2027
2128var ac : ArrayContainer !
2229
@@ -41,3 +48,38 @@ public func run_ArrayInClass(_ N: Int) {
4148 let a = ac!
4249 a. runLoop ( N)
4350}
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