Skip to content

Commit ac18e42

Browse files
Benchmarks for equating/comparing substrings (#10030)
* Benchmarks for equating/comparing substrings * Update main.swift * Regnerate benchmarks harness file
1 parent 0a0585c commit ac18e42

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

benchmark/single-source/Substring.swift

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,51 @@ public func run_LessSubstringSubstringGenericComparable(_ N: Int) {
180180
}
181181
}
182182

183+
@inline(never)
184+
public func run_SubstringEquatable(_ N: Int) {
185+
var string = "pen,pineapple,apple,pen"
186+
string += ",✒️,🍍,🍏,✒️"
187+
let substrings = string.split(separator: ",")
188+
var count = 0
189+
for _ in 1...N*500 {
190+
for s in substrings {
191+
if substrings.contains(s) { count = count &+ 1 }
192+
}
193+
}
194+
CheckResults(count == 8*N*500)
195+
}
196+
197+
@inline(never)
198+
public func run_SubstringEqualString(_ N: Int) {
199+
var string = "pen,pineapple,apple,pen"
200+
string += ",✒️,🍍,🍏,✒️"
201+
let substrings = string.split(separator: ",")
202+
let pineapple = "pineapple"
203+
let apple = "🍏"
204+
var count = 0
205+
for _ in 1...N*500 {
206+
for s in substrings {
207+
if s == pineapple || s == apple { count = count &+ 1 }
208+
}
209+
}
210+
CheckResults(count == 2*N*500)
211+
}
212+
213+
@inline(never)
214+
public func run_SubstringComparable(_ N: Int) {
215+
var string = "pen,pineapple,apple,pen"
216+
string += ",✒️,🍍,🍏,✒️"
217+
let substrings = string.split(separator: ",")
218+
let comparison = substrings + ["PPAP"]
219+
var count = 0
220+
for _ in 1...N*500 {
221+
if substrings.lexicographicallyPrecedes(comparison) {
222+
count = count &+ 1
223+
}
224+
}
225+
CheckResults(count == N*500)
226+
}
227+
183228
/*
184229
func checkLess<T, U>(_ x: T, _ y: U)
185230
where T : StringProtocol, U : StringProtocol {

benchmark/utils/main.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,9 @@ addTo(&precommitTests, "StringMatch", run_StringMatch)
386386
addTo(&precommitTests, "StringUTF16Builder", run_StringUTF16Builder)
387387
addTo(&precommitTests, "StringWalk", run_StringWalk)
388388
addTo(&precommitTests, "StringWithCString", run_StringWithCString)
389+
addTo(&precommitTests, "SubstringComparable", run_SubstringComparable)
390+
addTo(&precommitTests, "SubstringEqualString", run_SubstringEqualString)
391+
addTo(&precommitTests, "SubstringEquatable", run_SubstringEquatable)
389392
addTo(&precommitTests, "SubstringFromLongString", run_SubstringFromLongString)
390393
addTo(&precommitTests, "SubstringFromLongStringGeneric", run_SubstringFromLongStringGeneric)
391394
addTo(&precommitTests, "SuffixAnyCollection", run_SuffixAnyCollection)

0 commit comments

Comments
 (0)