Skip to content

Commit ea9984b

Browse files
Include n as a factor in the number of iterations.
1 parent 7c4fd37 commit ea9984b

File tree

1 file changed

+19
-15
lines changed

1 file changed

+19
-15
lines changed

benchmark/single-source/KeyPathPerformanceTests.swift

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,7 @@ public let benchmarks = [
3939
]
4040

4141
// Number of iterations for each benchmark.
42-
let numberOfIterationsForNestedStructs = 20000
43-
let numberOfIterationsForDirectAccess = 1_000_000
44-
let numberOfIterationsForKeyPathReadPerformance = 2000
45-
let numberOfIterationsForKeyPathWritePerformance = 12000
42+
let numberOfElementsForNestedStructs = 20000
4643

4744
// Make it easy to switch between primitives of different types (Int, Float, Double, etc.).
4845
typealias ElementType = Double
@@ -78,7 +75,7 @@ class FixedSizeArrayHolder {
7875
// Setup Functions.
7976
public func setupKeyPathNestedStructs() {
8077
FixedSizeArrayHolder.shared.forceInstantiation()
81-
for _ in 0 ..< numberOfIterationsForNestedStructs {
78+
for _ in 0 ..< numberOfElementsForNestedStructs {
8279
let instance = A(a: 0, b: B(b: 0, c: C(c: 0, d: D(d: 0, e: E(e: expectedIntForNestedStructs)))))
8380
FixedSizeArrayHolder.shared.mainArrayForNestedStructs.append(instance)
8481
}
@@ -884,21 +881,26 @@ func returnKeyPathArray() -> [AnyKeyPath] {
884881
}
885882

886883
@inline(never)
887-
public func run_KeyPathNestedStructs(n _: Int) {
884+
public func run_KeyPathNestedStructs(n: Int) {
888885
var sum = 0
889-
for el in FixedSizeArrayHolder.shared.mainArrayForNestedStructs {
890-
sum += el[keyPath: appendedKeyPath]
886+
var index = 0
887+
let iterationMultipier = 200
888+
for _ in 1 ... iterationMultipier * n {
889+
let element = FixedSizeArrayHolder.shared.mainArrayForNestedStructs[index]
890+
sum += element[keyPath: appendedKeyPath]
891+
index = (index + 1) % FixedSizeArrayHolder.shared.mainArrayForNestedStructs.count
891892
}
892-
assert(sum == numberOfIterationsForNestedStructs * expectedIntForNestedStructs)
893+
assert(sum == iterationMultipier * n * expectedIntForNestedStructs)
893894
}
894895

895896
// This is meant as a baseline, from a timing perspective,
896897
// for run_testKeyPathReadPerformance() and run_testKeyPathWritePerformance().
897898
@inline(never)
898-
public func run_testDirectAccess(n _: Int) {
899+
public func run_testDirectAccess(n: Int) {
899900
arrayHolder.reset()
900901
var fixedSizeArray100 = FixedSizeArrayHolder.shared.fixedSizeArray100
901-
for t in 0 ..< numberOfIterationsForDirectAccess {
902+
let iterationMultipier = 3000
903+
for t in 1 ... iterationMultipier * n {
902904
fixedSizeArray100.element50 += fixedSizeArray100.element1 + ElementType(t)
903905
fixedSizeArray100.element46 += fixedSizeArray100.element63 - fixedSizeArray100.element99
904906
fixedSizeArray100.element43 += fixedSizeArray100.element39 * fixedSizeArray100.element27
@@ -932,10 +934,11 @@ public func run_testDirectAccess(n _: Int) {
932934

933935
// This measures read performance of keypaths.
934936
@inline(never)
935-
public func run_testKeyPathReadPerformance(n _: Int) {
937+
public func run_testKeyPathReadPerformance(n: Int) {
936938
arrayHolder.reset()
937939
var fixedSizeArray100 = FixedSizeArrayHolder.shared.fixedSizeArray100
938-
for t in 0 ..< numberOfIterationsForKeyPathReadPerformance {
940+
let iterationMultipier = 25
941+
for t in 1 ... iterationMultipier * n {
939942
fixedSizeArray100.element50 += fixedSizeArray100.element1 + ElementType(t)
940943
fixedSizeArray100.element46 += fixedSizeArray100.element63 - fixedSizeArray100[keyPath: kp99]
941944
fixedSizeArray100.element43 += fixedSizeArray100.element39 * fixedSizeArray100[keyPath: kp27]
@@ -969,10 +972,11 @@ public func run_testKeyPathReadPerformance(n _: Int) {
969972

970973
// This measures write performance of keypaths.
971974
@inline(never)
972-
public func run_testKeyPathWritePerformance(n _: Int) {
975+
public func run_testKeyPathWritePerformance(n: Int) {
973976
arrayHolder.reset()
974977
var fixedSizeArray100 = FixedSizeArrayHolder.shared.fixedSizeArray100
975-
for t in 0 ..< numberOfIterationsForKeyPathWritePerformance {
978+
let iterationMultipier = 150
979+
for t in 1 ... iterationMultipier * n {
976980
fixedSizeArray100.element50 += fixedSizeArray100.element1 + ElementType(t)
977981
fixedSizeArray100[keyPath: kp46] += fixedSizeArray100.element63 - fixedSizeArray100.element99
978982
fixedSizeArray100[keyPath: kp43] += fixedSizeArray100.element39 * fixedSizeArray100.element27

0 commit comments

Comments
 (0)