Skip to content

Commit 7f042a7

Browse files
authored
Merge pull request #16744 from gottesmm/pr-2e455ec599c163c10ef601ab05763ed442892c5a
[benchmarks] Move StringComparison Workload initialization out of the…
2 parents 32c3863 + 013ae04 commit 7f042a7

File tree

2 files changed

+244
-124
lines changed

2 files changed

+244
-124
lines changed

benchmark/single-source/StringComparison.swift

Lines changed: 218 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -34,167 +34,275 @@ public let StringComparison = [
3434
BenchmarkInfo(
3535
name: "StringComparison_ascii",
3636
runFunction: run_StringComparison_ascii,
37-
tags: [.validation, .api, .String]),
37+
tags: [.validation, .api, .String],
38+
setUpFunction: setup_StringComparison_ascii),
3839
BenchmarkInfo(
3940
name: "StringComparison_latin1",
4041
runFunction: run_StringComparison_latin1,
41-
tags: [.validation, .api, .String]),
42+
tags: [.validation, .api, .String],
43+
setUpFunction: setup_StringComparison_latin1),
4244
BenchmarkInfo(
4345
name: "StringComparison_fastPrenormal",
4446
runFunction: run_StringComparison_fastPrenormal,
45-
tags: [.validation, .api, .String]),
47+
tags: [.validation, .api, .String],
48+
setUpFunction: setup_StringComparison_fastPrenormal),
4649
BenchmarkInfo(
4750
name: "StringComparison_slowerPrenormal",
4851
runFunction: run_StringComparison_slowerPrenormal,
49-
tags: [.validation, .api, .String]),
52+
tags: [.validation, .api, .String],
53+
setUpFunction: setup_StringComparison_slowerPrenormal),
5054
BenchmarkInfo(
5155
name: "StringComparison_nonBMPSlowestPrenormal",
5256
runFunction: run_StringComparison_nonBMPSlowestPrenormal,
53-
tags: [.validation, .api, .String]),
57+
tags: [.validation, .api, .String],
58+
setUpFunction: setup_StringComparison_nonBMPSlowestPrenormal),
5459
BenchmarkInfo(
5560
name: "StringComparison_emoji",
5661
runFunction: run_StringComparison_emoji,
57-
tags: [.validation, .api, .String]),
62+
tags: [.validation, .api, .String],
63+
setUpFunction: setup_StringComparison_emoji),
5864
BenchmarkInfo(
5965
name: "StringComparison_abnormal",
6066
runFunction: run_StringComparison_abnormal,
61-
tags: [.validation, .api, .String]),
67+
tags: [.validation, .api, .String],
68+
setUpFunction: setup_StringComparison_abnormal),
6269
BenchmarkInfo(
6370
name: "StringComparison_zalgo",
6471
runFunction: run_StringComparison_zalgo,
65-
tags: [.validation, .api, .String]),
72+
tags: [.validation, .api, .String],
73+
setUpFunction: setup_StringComparison_zalgo),
6674
BenchmarkInfo(
6775
name: "StringComparison_longSharedPrefix",
6876
runFunction: run_StringComparison_longSharedPrefix,
69-
tags: [.validation, .api, .String]),
77+
tags: [.validation, .api, .String],
78+
setUpFunction: setup_StringComparison_longSharedPrefix),
7079
]
71-
72-
@inline(never)
73-
public func run_StringComparison_ascii(_ N: Int) {
74-
let workload = Workload.ascii
75-
let tripCount = workload.tripCount
76-
let payload = workload.payload
77-
for _ in 1...tripCount*N {
78-
for s1 in payload {
79-
for s2 in payload {
80-
blackHole(s1 < s2)
81-
}
80+
81+
82+
var Workload_ascii: Workload? = nil
83+
84+
@inline(never)
85+
public func setup_StringComparison_ascii() {
86+
if Workload_ascii != nil {
87+
return
88+
}
89+
Workload_ascii = Workload.ascii
90+
}
91+
92+
@inline(never)
93+
public func run_StringComparison_ascii(_ N: Int) {
94+
let workload = Workload_ascii._unsafelyUnwrappedUnchecked
95+
let tripCount = workload.tripCount
96+
let payload = workload.payload
97+
for _ in 1...tripCount*N {
98+
for s1 in payload {
99+
for s2 in payload {
100+
blackHole(s1 < s2)
82101
}
83102
}
84103
}
85-
86-
@inline(never)
87-
public func run_StringComparison_latin1(_ N: Int) {
88-
let workload = Workload.latin1
89-
let tripCount = workload.tripCount
90-
let payload = workload.payload
91-
for _ in 1...tripCount*N {
92-
for s1 in payload {
93-
for s2 in payload {
94-
blackHole(s1 < s2)
95-
}
104+
}
105+
106+
107+
var Workload_latin1: Workload? = nil
108+
109+
@inline(never)
110+
public func setup_StringComparison_latin1() {
111+
if Workload_latin1 != nil {
112+
return
113+
}
114+
Workload_latin1 = Workload.latin1
115+
}
116+
117+
@inline(never)
118+
public func run_StringComparison_latin1(_ N: Int) {
119+
let workload = Workload_latin1._unsafelyUnwrappedUnchecked
120+
let tripCount = workload.tripCount
121+
let payload = workload.payload
122+
for _ in 1...tripCount*N {
123+
for s1 in payload {
124+
for s2 in payload {
125+
blackHole(s1 < s2)
96126
}
97127
}
98128
}
99-
100-
@inline(never)
101-
public func run_StringComparison_fastPrenormal(_ N: Int) {
102-
let workload = Workload.fastPrenormal
103-
let tripCount = workload.tripCount
104-
let payload = workload.payload
105-
for _ in 1...tripCount*N {
106-
for s1 in payload {
107-
for s2 in payload {
108-
blackHole(s1 < s2)
109-
}
129+
}
130+
131+
132+
var Workload_fastPrenormal: Workload? = nil
133+
134+
@inline(never)
135+
public func setup_StringComparison_fastPrenormal() {
136+
if Workload_fastPrenormal != nil {
137+
return
138+
}
139+
Workload_fastPrenormal = Workload.fastPrenormal
140+
}
141+
142+
@inline(never)
143+
public func run_StringComparison_fastPrenormal(_ N: Int) {
144+
let workload = Workload_fastPrenormal._unsafelyUnwrappedUnchecked
145+
let tripCount = workload.tripCount
146+
let payload = workload.payload
147+
for _ in 1...tripCount*N {
148+
for s1 in payload {
149+
for s2 in payload {
150+
blackHole(s1 < s2)
110151
}
111152
}
112153
}
113-
114-
@inline(never)
115-
public func run_StringComparison_slowerPrenormal(_ N: Int) {
116-
let workload = Workload.slowerPrenormal
117-
let tripCount = workload.tripCount
118-
let payload = workload.payload
119-
for _ in 1...tripCount*N {
120-
for s1 in payload {
121-
for s2 in payload {
122-
blackHole(s1 < s2)
123-
}
154+
}
155+
156+
157+
var Workload_slowerPrenormal: Workload? = nil
158+
159+
@inline(never)
160+
public func setup_StringComparison_slowerPrenormal() {
161+
if Workload_slowerPrenormal != nil {
162+
return
163+
}
164+
Workload_slowerPrenormal = Workload.slowerPrenormal
165+
}
166+
167+
@inline(never)
168+
public func run_StringComparison_slowerPrenormal(_ N: Int) {
169+
let workload = Workload_slowerPrenormal._unsafelyUnwrappedUnchecked
170+
let tripCount = workload.tripCount
171+
let payload = workload.payload
172+
for _ in 1...tripCount*N {
173+
for s1 in payload {
174+
for s2 in payload {
175+
blackHole(s1 < s2)
124176
}
125177
}
126178
}
127-
128-
@inline(never)
129-
public func run_StringComparison_nonBMPSlowestPrenormal(_ N: Int) {
130-
let workload = Workload.nonBMPSlowestPrenormal
131-
let tripCount = workload.tripCount
132-
let payload = workload.payload
133-
for _ in 1...tripCount*N {
134-
for s1 in payload {
135-
for s2 in payload {
136-
blackHole(s1 < s2)
137-
}
179+
}
180+
181+
182+
var Workload_nonBMPSlowestPrenormal: Workload? = nil
183+
184+
@inline(never)
185+
public func setup_StringComparison_nonBMPSlowestPrenormal() {
186+
if Workload_nonBMPSlowestPrenormal != nil {
187+
return
188+
}
189+
Workload_nonBMPSlowestPrenormal = Workload.nonBMPSlowestPrenormal
190+
}
191+
192+
@inline(never)
193+
public func run_StringComparison_nonBMPSlowestPrenormal(_ N: Int) {
194+
let workload = Workload_nonBMPSlowestPrenormal._unsafelyUnwrappedUnchecked
195+
let tripCount = workload.tripCount
196+
let payload = workload.payload
197+
for _ in 1...tripCount*N {
198+
for s1 in payload {
199+
for s2 in payload {
200+
blackHole(s1 < s2)
138201
}
139202
}
140203
}
141-
142-
@inline(never)
143-
public func run_StringComparison_emoji(_ N: Int) {
144-
let workload = Workload.emoji
145-
let tripCount = workload.tripCount
146-
let payload = workload.payload
147-
for _ in 1...tripCount*N {
148-
for s1 in payload {
149-
for s2 in payload {
150-
blackHole(s1 < s2)
151-
}
204+
}
205+
206+
207+
var Workload_emoji: Workload? = nil
208+
209+
@inline(never)
210+
public func setup_StringComparison_emoji() {
211+
if Workload_emoji != nil {
212+
return
213+
}
214+
Workload_emoji = Workload.emoji
215+
}
216+
217+
@inline(never)
218+
public func run_StringComparison_emoji(_ N: Int) {
219+
let workload = Workload_emoji._unsafelyUnwrappedUnchecked
220+
let tripCount = workload.tripCount
221+
let payload = workload.payload
222+
for _ in 1...tripCount*N {
223+
for s1 in payload {
224+
for s2 in payload {
225+
blackHole(s1 < s2)
152226
}
153227
}
154228
}
155-
156-
@inline(never)
157-
public func run_StringComparison_abnormal(_ N: Int) {
158-
let workload = Workload.abnormal
159-
let tripCount = workload.tripCount
160-
let payload = workload.payload
161-
for _ in 1...tripCount*N {
162-
for s1 in payload {
163-
for s2 in payload {
164-
blackHole(s1 < s2)
165-
}
229+
}
230+
231+
232+
var Workload_abnormal: Workload? = nil
233+
234+
@inline(never)
235+
public func setup_StringComparison_abnormal() {
236+
if Workload_abnormal != nil {
237+
return
238+
}
239+
Workload_abnormal = Workload.abnormal
240+
}
241+
242+
@inline(never)
243+
public func run_StringComparison_abnormal(_ N: Int) {
244+
let workload = Workload_abnormal._unsafelyUnwrappedUnchecked
245+
let tripCount = workload.tripCount
246+
let payload = workload.payload
247+
for _ in 1...tripCount*N {
248+
for s1 in payload {
249+
for s2 in payload {
250+
blackHole(s1 < s2)
166251
}
167252
}
168253
}
169-
170-
@inline(never)
171-
public func run_StringComparison_zalgo(_ N: Int) {
172-
let workload = Workload.zalgo
173-
let tripCount = workload.tripCount
174-
let payload = workload.payload
175-
for _ in 1...tripCount*N {
176-
for s1 in payload {
177-
for s2 in payload {
178-
blackHole(s1 < s2)
179-
}
254+
}
255+
256+
257+
var Workload_zalgo: Workload? = nil
258+
259+
@inline(never)
260+
public func setup_StringComparison_zalgo() {
261+
if Workload_zalgo != nil {
262+
return
263+
}
264+
Workload_zalgo = Workload.zalgo
265+
}
266+
267+
@inline(never)
268+
public func run_StringComparison_zalgo(_ N: Int) {
269+
let workload = Workload_zalgo._unsafelyUnwrappedUnchecked
270+
let tripCount = workload.tripCount
271+
let payload = workload.payload
272+
for _ in 1...tripCount*N {
273+
for s1 in payload {
274+
for s2 in payload {
275+
blackHole(s1 < s2)
180276
}
181277
}
182278
}
183-
184-
@inline(never)
185-
public func run_StringComparison_longSharedPrefix(_ N: Int) {
186-
let workload = Workload.longSharedPrefix
187-
let tripCount = workload.tripCount
188-
let payload = workload.payload
189-
for _ in 1...tripCount*N {
190-
for s1 in payload {
191-
for s2 in payload {
192-
blackHole(s1 < s2)
193-
}
279+
}
280+
281+
282+
var Workload_longSharedPrefix: Workload? = nil
283+
284+
@inline(never)
285+
public func setup_StringComparison_longSharedPrefix() {
286+
if Workload_longSharedPrefix != nil {
287+
return
288+
}
289+
Workload_longSharedPrefix = Workload.longSharedPrefix
290+
}
291+
292+
@inline(never)
293+
public func run_StringComparison_longSharedPrefix(_ N: Int) {
294+
let workload = Workload_longSharedPrefix._unsafelyUnwrappedUnchecked
295+
let tripCount = workload.tripCount
296+
let payload = workload.payload
297+
for _ in 1...tripCount*N {
298+
for s1 in payload {
299+
for s2 in payload {
300+
blackHole(s1 < s2)
194301
}
195302
}
196303
}
197-
304+
}
305+
198306

199307
struct Workload {
200308
static let N = 100
@@ -406,4 +514,4 @@ struct Workload {
406514
""".lines()
407515
)
408516

409-
}
517+
}

0 commit comments

Comments
 (0)