@@ -16,27 +16,30 @@ public let RangeOverlaps = [
16
16
BenchmarkInfo (
17
17
name: " RangeOverlapsRange " ,
18
18
runFunction: run_RangeOverlapsRange,
19
- tags: [ . validation, . api] ) ,
19
+ tags: [ . validation, . api] ,
20
+ setUpFunction: buildRanges) ,
20
21
BenchmarkInfo (
21
22
name: " RangeOverlapsClosedRange " ,
22
23
runFunction: run_RangeOverlapsClosedRange,
23
- tags: [ . validation, . api] ) ,
24
+ tags: [ . validation, . api] ,
25
+ setUpFunction: buildRanges) ,
24
26
BenchmarkInfo (
25
27
name: " ClosedRangeOverlapsClosedRange " ,
26
28
runFunction: run_ClosedRangeOverlapsClosedRange,
27
- tags: [ . validation, . api] ) ,
29
+ tags: [ . validation, . api] ,
30
+ setUpFunction: buildRanges)
28
31
]
29
32
30
- @inline ( never) func foo( ) { }
33
+ private func buildRanges( ) {
34
+ blackHole ( ranges)
35
+ blackHole ( closedRanges)
36
+ }
37
+
38
+ private let ranges : [ Range < Int > ] = ( - 8 ... 8 ) . flatMap { a in ( 0 ... 16 ) . map { l in a..< ( a+ l) } }
39
+ private let closedRanges : [ ClosedRange < Int > ] = ( - 8 ... 8 ) . flatMap { a in ( 0 ... 16 ) . map { l in a... ( a+ l) } }
31
40
32
41
@inline ( never)
33
42
public func run_RangeOverlapsRange( _ N: Int ) {
34
- var ranges : [ Range < Int > ] = [ ]
35
- for a in - 20 ... 20 {
36
- for b in 0 ... 40 {
37
- ranges. append ( a ..< ( a+ b) )
38
- }
39
- }
40
43
var check : UInt64 = 0
41
44
for _ in 0 ..< N {
42
45
for lhs in ranges {
@@ -45,19 +48,11 @@ public func run_RangeOverlapsRange(_ N: Int) {
45
48
}
46
49
}
47
50
}
48
- CheckResults ( check == 1771200 * UInt64( N) )
51
+ CheckResults ( check == 47872 * UInt64( N) )
49
52
}
50
53
51
54
@inline ( never)
52
55
public func run_RangeOverlapsClosedRange( _ N: Int ) {
53
- var ranges : [ Range < Int > ] = [ ]
54
- var closedRanges : [ ClosedRange < Int > ] = [ ]
55
- for a in - 20 ... 20 {
56
- for b in 0 ... 40 {
57
- ranges. append ( a ..< ( a+ b) )
58
- closedRanges. append ( a ... ( a+ b) )
59
- }
60
- }
61
56
var check : UInt64 = 0
62
57
for _ in 0 ..< N {
63
58
for lhs in ranges {
@@ -66,17 +61,11 @@ public func run_RangeOverlapsClosedRange(_ N: Int) {
66
61
}
67
62
}
68
63
}
69
- CheckResults ( check == 1826960 * UInt64( N) )
64
+ CheckResults ( check == 51680 * UInt64( N) )
70
65
}
71
66
72
67
@inline ( never)
73
68
public func run_ClosedRangeOverlapsClosedRange( _ N: Int ) {
74
- var closedRanges : [ ClosedRange < Int > ] = [ ]
75
- for a in - 20 ... 20 {
76
- for b in 0 ... 40 {
77
- closedRanges. append ( a ... ( a+ b) )
78
- }
79
- }
80
69
var check : UInt64 = 0
81
70
for _ in 0 ..< N {
82
71
for lhs in closedRanges {
@@ -85,5 +74,5 @@ public func run_ClosedRangeOverlapsClosedRange(_ N: Int) {
85
74
}
86
75
}
87
76
}
88
- CheckResults ( check == 1884401 * UInt64( N) )
77
+ CheckResults ( check == 55777 * UInt64( N) )
89
78
}
0 commit comments