Skip to content

Commit 4483e84

Browse files
committed
SR-10855: Consistent test data and code refactor
1 parent 76bf39c commit 4483e84

File tree

1 file changed

+35
-53
lines changed

1 file changed

+35
-53
lines changed

benchmark/single-source/AngryPhonebook.swift

Lines changed: 35 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -15,72 +15,54 @@
1515
import TestsUtils
1616
import Foundation
1717

18+
let t: [BenchmarkCategory] = [.validation, .api, .String]
19+
1820
public let AngryPhonebook = [
1921
BenchmarkInfo(
20-
name: "AngryPhonebook",
21-
runFunction: run_AngryPhonebook,
22-
tags: [.validation, .api, .String],
23-
legacyFactor: 7),
22+
name: "AngryPhonebook.Latin",
23+
runFunction: { angryPhonebook($0, latin) },
24+
tags: t,
25+
setUpFunction: { blackHole(latin) }),
2426
BenchmarkInfo(
25-
name: "AngryPhonebookCyrillic",
26-
runFunction: run_AngryPhonebookCyrillic,
27-
tags: [.validation, .api, .String]),
27+
name: "AngryPhonebook.Armenian",
28+
runFunction: { angryPhonebook($0, armenian) },
29+
tags: t,
30+
setUpFunction: { blackHole(armenian) }),
2831
BenchmarkInfo(
29-
name: "AngryPhonebookArmenian",
30-
runFunction: run_AngryPhonebookArmenian,
31-
tags: [.validation, .api, .String])
32+
name: "AngryPhonebook.Cyrillic",
33+
runFunction: { angryPhonebook($0, cyrillic) },
34+
tags: t,
35+
setUpFunction: { blackHole(cyrillic) })
3236
]
3337

34-
let words = [
35-
"James", "John", "Robert", "Michael", "William", "David", "Richard", "Joseph",
36-
"Charles", "Thomas", "Christopher", "Daniel", "Matthew", "Donald", "Anthony",
37-
"Paul", "Mark", "George", "Steven", "Kenneth", "Andrew", "Edward", "Brian",
38-
"Joshua", "Kevin", "Ronald", "Timothy", "Jason", "Jeffrey", "Gary", "Ryan",
39-
"Nicholas", "Eric", "Stephen", "Jacob", "Larry", "Frank"]
40-
41-
@inline(never)
42-
public func run_AngryPhonebook(_ N: Int) {
43-
// Permute the names.
44-
for _ in 1...N {
45-
for firstname in words {
46-
for lastname in words {
47-
_ = (firstname.uppercased(), lastname.lowercased())
48-
}
49-
}
50-
}
51-
}
38+
// Workloads for various scripts. Always 20 names for 400 pairings.
39+
// To keep the performance of various scripts roughly comparable, aim for
40+
// a total length of approximately 120 characters.
41+
// E.g.: `latin.joined(separator: "").count == 118`
5242

53-
let cyrillicNames: [String] = [
54-
"Александр", "Аркадий", "Аня", "Даниил", "Дмитрий", "Эдуард", "Юрій 🇺🇦", "Давид",
55-
"Анна", "Дмитрий 🇺🇸", "Евгений", "👍🏼 Борис", "Владимир", "👍🏽 Артур", "Антон",
56-
"Антон 👍🏻", "Надія 👍", "Алёна", "Алиса", "Елена 🇷🇺", "Елизавета 👍🏾", "👍🏿 Инна",
57-
"Жанна 🇨🇦", "Ульяна", "Кристина", "Ксения", "👍🏿👍🏾👍🏽👍🏼👍🏻👍🇺🇦🇷🇺🇨🇦🇺🇸👨‍👩‍👧‍👦"]
43+
let latin = [
44+
"James", "John", "Robert", "Michael", "William", "David", "Richard", "Joseph",
45+
"Charles", "Thomas", "Jacob", "Daniel", "Matthew", "Donald", "Anthony",
46+
"Paul", "Mark", "George", "Steven", "Kenneth"]
5847

59-
@inline(never)
60-
public func run_AngryPhonebookCyrillic(_ N: Int) {
61-
// Permute the names.
62-
for _ in 1...N {
63-
for firstname in cyrillicNames {
64-
for lastname in cyrillicNames {
65-
_ = (firstname.uppercased(), lastname.lowercased())
66-
}
67-
}
68-
}
69-
}
48+
let armenian: [String] = [
49+
"Արմեն", "Աննա", "Հարութ", "Միքայել", "Մարիա", "Դավիթ", "Վարդան",
50+
"Նարինե", "Տիգրան", "Տաթևիկ", "Թագուհի", "Թամարա", "Ազնաուր", "Գրիգոր",
51+
"Կոմիտաս", "Հայկ", "Գառնիկ", "Վահրամ", "Վահագն", "Գևորգ"]
7052

71-
let armenianNames: [String] = [
72-
"Արմեն 🇦🇲", "Աննա", "Հարություն", "Միքայել", "Մարիա", "Դավիթ", "Վարդան", "Նարինե",
73-
"Հռիփսիմե", "Տիգրան👍", "Տաթև", "Ադամ", "Ազատ", "Ազնաւուր🇨🇦", "Գրիգոր", "Անի",
74-
"Լիլիթ👍🏽", "Հայկ👍🏼", "Անդրանիկ", "Գառնիկ 👨‍👩‍👧‍👦", "Վահրամ", "Վահագն👍🏿", "Գևորգ",
75-
"Թագուհի 🇺🇸", "Թամարա👍🏻", "Արամ", "Արսեն", "Կոմիտաս", "👍🏿👍🏾👍🏽👍🏼👍🏻👍🇦🇲🇨🇦🇺🇸👨‍👩‍👧‍👦"]
53+
let cyrillic: [String] = [
54+
"Ульяна", "Аркадий", "Аня", "Даниил", "Дмитрий", "Эдуард", "Юрій", "Давид",
55+
"Анна", "Дмитрий", "Евгений", "Борис", "Ксения", "Артур", "Аполлон",
56+
"Соломон", "Николай", "Кристи", "Надежда", "Спартак"]
7657

7758
@inline(never)
78-
public func run_AngryPhonebookArmenian(_ N: Int) {
59+
public func angryPhonebook(_ N: Int, _ names: [String]) {
60+
assert(names.count == 20)
7961
// Permute the names.
8062
for _ in 1...N {
81-
for firstname in armenianNames {
82-
for lastname in armenianNames {
83-
_ = (firstname.uppercased(), lastname.lowercased())
63+
for firstname in names {
64+
for lastname in names {
65+
blackHole((firstname.uppercased(), lastname.lowercased()))
8466
}
8567
}
8668
}

0 commit comments

Comments
 (0)