Skip to content

Commit b25d3a0

Browse files
author
Lance Parker
committed
[stdlib]String normalization functions (swiftlang#21026)
* fast/foreignNormalize functions
1 parent 7d8dba3 commit b25d3a0

13 files changed

+1147
-644
lines changed

benchmark/single-source/StringComparison.swift

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -140,52 +140,52 @@ public let StringHashing: [BenchmarkInfo] = [
140140
),
141141
]
142142

143-
public let NormalizedIterator: [BenchmarkInfo] = [
143+
public let StringNormalization: [BenchmarkInfo] = [
144144
BenchmarkInfo(
145145
name: "NormalizedIterator_ascii",
146-
runFunction: run_NormalizedIterator_ascii,
146+
runFunction: run_StringNormalization_ascii,
147147
tags: [.validation, .String],
148148
setUpFunction: { blackHole(Workload_ascii) }
149149
),
150150
BenchmarkInfo(
151151
name: "NormalizedIterator_latin1",
152-
runFunction: run_NormalizedIterator_latin1,
152+
runFunction: run_StringNormalization_latin1,
153153
tags: [.validation, .String],
154154
setUpFunction: { blackHole(Workload_latin1) }
155155
),
156156
BenchmarkInfo(
157157
name: "NormalizedIterator_fastPrenormal",
158-
runFunction: run_NormalizedIterator_fastPrenormal,
158+
runFunction: run_StringNormalization_fastPrenormal,
159159
tags: [.validation, .String],
160160
setUpFunction: { blackHole(Workload_fastPrenormal) }
161161
),
162162
BenchmarkInfo(
163163
name: "NormalizedIterator_slowerPrenormal",
164-
runFunction: run_NormalizedIterator_slowerPrenormal,
164+
runFunction: run_StringNormalization_slowerPrenormal,
165165
tags: [.validation, .String],
166166
setUpFunction: { blackHole(Workload_slowerPrenormal) }
167167
),
168168
BenchmarkInfo(
169169
name: "NormalizedIterator_nonBMPSlowestPrenormal",
170-
runFunction: run_NormalizedIterator_nonBMPSlowestPrenormal,
170+
runFunction: run_StringNormalization_nonBMPSlowestPrenormal,
171171
tags: [.validation, .String],
172172
setUpFunction: { blackHole(Workload_nonBMPSlowestPrenormal) }
173173
),
174174
BenchmarkInfo(
175175
name: "NormalizedIterator_emoji",
176-
runFunction: run_NormalizedIterator_emoji,
176+
runFunction: run_StringNormalization_emoji,
177177
tags: [.validation, .String],
178178
setUpFunction: { blackHole(Workload_emoji) }
179179
),
180180
BenchmarkInfo(
181181
name: "NormalizedIterator_abnormal",
182-
runFunction: run_NormalizedIterator_abnormal,
182+
runFunction: run_StringNormalization_abnormal,
183183
tags: [.validation, .String],
184184
setUpFunction: { blackHole(Workload_abnormal) }
185185
),
186186
BenchmarkInfo(
187187
name: "NormalizedIterator_zalgo",
188-
runFunction: run_NormalizedIterator_zalgo,
188+
runFunction: run_StringNormalization_zalgo,
189189
tags: [.validation, .String],
190190
setUpFunction: { blackHole(Workload_zalgo) }
191191
),
@@ -435,7 +435,7 @@ public func run_StringHashing_zalgo(_ N: Int) {
435435

436436

437437
@inline(never)
438-
public func run_NormalizedIterator_ascii(_ N: Int) {
438+
public func run_StringNormalization_ascii(_ N: Int) {
439439
let workload: Workload = Workload.ascii
440440
let tripCount = workload.tripCount
441441
let payload = workload.payload
@@ -449,7 +449,7 @@ public func run_NormalizedIterator_ascii(_ N: Int) {
449449
}
450450

451451
@inline(never)
452-
public func run_NormalizedIterator_latin1(_ N: Int) {
452+
public func run_StringNormalization_latin1(_ N: Int) {
453453
let workload: Workload = Workload.latin1
454454
let tripCount = workload.tripCount
455455
let payload = workload.payload
@@ -463,7 +463,7 @@ public func run_NormalizedIterator_latin1(_ N: Int) {
463463
}
464464

465465
@inline(never)
466-
public func run_NormalizedIterator_fastPrenormal(_ N: Int) {
466+
public func run_StringNormalization_fastPrenormal(_ N: Int) {
467467
let workload: Workload = Workload.fastPrenormal
468468
let tripCount = workload.tripCount
469469
let payload = workload.payload
@@ -477,7 +477,7 @@ public func run_NormalizedIterator_fastPrenormal(_ N: Int) {
477477
}
478478

479479
@inline(never)
480-
public func run_NormalizedIterator_slowerPrenormal(_ N: Int) {
480+
public func run_StringNormalization_slowerPrenormal(_ N: Int) {
481481
let workload: Workload = Workload.slowerPrenormal
482482
let tripCount = workload.tripCount
483483
let payload = workload.payload
@@ -491,7 +491,7 @@ public func run_NormalizedIterator_slowerPrenormal(_ N: Int) {
491491
}
492492

493493
@inline(never)
494-
public func run_NormalizedIterator_nonBMPSlowestPrenormal(_ N: Int) {
494+
public func run_StringNormalization_nonBMPSlowestPrenormal(_ N: Int) {
495495
let workload: Workload = Workload.nonBMPSlowestPrenormal
496496
let tripCount = workload.tripCount
497497
let payload = workload.payload
@@ -505,7 +505,7 @@ public func run_NormalizedIterator_nonBMPSlowestPrenormal(_ N: Int) {
505505
}
506506

507507
@inline(never)
508-
public func run_NormalizedIterator_emoji(_ N: Int) {
508+
public func run_StringNormalization_emoji(_ N: Int) {
509509
let workload: Workload = Workload.emoji
510510
let tripCount = workload.tripCount
511511
let payload = workload.payload
@@ -519,7 +519,7 @@ public func run_NormalizedIterator_emoji(_ N: Int) {
519519
}
520520

521521
@inline(never)
522-
public func run_NormalizedIterator_abnormal(_ N: Int) {
522+
public func run_StringNormalization_abnormal(_ N: Int) {
523523
let workload: Workload = Workload.abnormal
524524
let tripCount = workload.tripCount
525525
let payload = workload.payload
@@ -533,7 +533,7 @@ public func run_NormalizedIterator_abnormal(_ N: Int) {
533533
}
534534

535535
@inline(never)
536-
public func run_NormalizedIterator_zalgo(_ N: Int) {
536+
public func run_StringNormalization_zalgo(_ N: Int) {
537537
let workload: Workload = Workload.zalgo
538538
let tripCount = workload.tripCount
539539
let payload = workload.payload
@@ -547,6 +547,7 @@ public func run_NormalizedIterator_zalgo(_ N: Int) {
547547
}
548548

549549

550+
550551
struct Workload {
551552
static let N = 100
552553

benchmark/single-source/StringComparison.swift.gyb

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,13 @@ extension String {
3030
}
3131
}
3232

33-
% AllWorkloads = ["ascii", "latin1", "fastPrenormal", "slowerPrenormal", "nonBMPSlowestPrenormal", "emoji", "abnormal", "zalgo", "longSharedPrefix"]
34-
% ComparisonWorkloads = AllWorkloads
35-
% HashingWorkloads = ["ascii", "latin1", "fastPrenormal", "slowerPrenormal", "nonBMPSlowestPrenormal", "emoji", "abnormal", "zalgo"]
36-
37-
38-
% NormalizedIteratorWorkloads = ["ascii", "latin1", "fastPrenormal", "slowerPrenormal", "nonBMPSlowestPrenormal", "emoji", "abnormal", "zalgo"]
33+
%{
34+
AllWorkloads = ["ascii", "latin1", "fastPrenormal", "slowerPrenormal",
35+
"nonBMPSlowestPrenormal", "emoji", "abnormal", "zalgo",
36+
"longSharedPrefix"]
37+
ComparisonWorkloads = AllWorkloads
38+
HashingWorkloads = AllWorkloads[:-1]
39+
NormalizationWorkloads = AllWorkloads[:-1]
3940

4041
public let StringComparison: [BenchmarkInfo] = [
4142
% for Name in ComparisonWorkloads:
@@ -59,15 +60,15 @@ public let StringHashing: [BenchmarkInfo] = [
5960
% end # HashingWorkloads
6061
]
6162

62-
public let NormalizedIterator: [BenchmarkInfo] = [
63-
% for Name in NormalizedIteratorWorkloads:
63+
public let StringNormalization: [BenchmarkInfo] = [
64+
% for Name in NormalizationWorkloads:
6465
BenchmarkInfo(
6566
name: "NormalizedIterator_${Name}",
66-
runFunction: run_NormalizedIterator_${Name},
67+
runFunction: run_StringNormalization_${Name},
6768
tags: [.validation, .String],
6869
setUpFunction: { blackHole(Workload_${Name}) }
6970
),
70-
% end # NormalizedIteratorWorkloads
71+
% end # NormalizationWorkloads
7172
]
7273

7374
% for Name in AllWorkloads:
@@ -107,9 +108,9 @@ public func run_StringHashing_${Name}(_ N: Int) {
107108

108109
% end # HashingWorkloads
109110

110-
%for Name in NormalizedIteratorWorkloads:
111+
%for Name in NormalizationWorkloads:
111112
@inline(never)
112-
public func run_NormalizedIterator_${Name}(_ N: Int) {
113+
public func run_StringNormalization_${Name}(_ N: Int) {
113114
let workload: Workload = Workload.${Name}
114115
let tripCount = workload.tripCount
115116
let payload = workload.payload
@@ -122,7 +123,8 @@ public func run_NormalizedIterator_${Name}(_ N: Int) {
122123
}
123124
}
124125

125-
% end # NormalizedIteratorWorkloads
126+
% end # NormalizationWorkloads
127+
126128

127129
struct Workload {
128130
static let N = 100

benchmark/utils/main.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,6 @@ registerBenchmark(NSErrorTest)
266266
registerBenchmark(NSStringConversion)
267267
registerBenchmark(NibbleSort)
268268
registerBenchmark(NopDeinit)
269-
registerBenchmark(NormalizedIterator)
270269
registerBenchmark(ObjectAllocation)
271270
#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS)
272271
registerBenchmark(ObjectiveCBridging)
@@ -328,6 +327,7 @@ registerBenchmark(StringInterpolation)
328327
registerBenchmark(StringInterpolationSmall)
329328
registerBenchmark(StringInterpolationManySmallSegments)
330329
registerBenchmark(StringMatch)
330+
registerBenchmark(StringNormalization)
331331
registerBenchmark(StringRemoveDupes)
332332
registerBenchmark(StringTests)
333333
registerBenchmark(StringWalk)

stdlib/public/core/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@ set(SWIFTLIB_ESSENTIAL
101101
NativeDictionary.swift
102102
NativeSet.swift
103103
NewtypeWrapper.swift
104-
NormalizedCodeUnitIterator.swift
105104
ObjectIdentifier.swift
106105
Optional.swift
107106
OptionSet.swift

0 commit comments

Comments
 (0)