Skip to content

Commit cac8363

Browse files
authored
Merge pull request #20666 from palimondo/i-just-do-eyes
[benchmark] Existential Redux
2 parents 458690e + 776ace0 commit cac8363

File tree

4 files changed

+684
-591
lines changed

4 files changed

+684
-591
lines changed

benchmark/single-source/ArrayInClass.swift

Lines changed: 48 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,19 @@
1111
//===----------------------------------------------------------------------===//
1212

1313
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+
]
2027

2128
var 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

Comments
 (0)