mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
72 lines
1.6 KiB
Swift
72 lines
1.6 KiB
Swift
// Dictionary compact map values benchmark
|
|
import TestsUtils
|
|
|
|
public let DictionaryCompactMapValues = [
|
|
BenchmarkInfo(name: "DictionaryCompactMapValuesOfNilValue", runFunction: run_DictionaryCompactMapValuesOfNilValue, tags: [.validation, .api, .Dictionary]),
|
|
BenchmarkInfo(name: "DictionaryCompactMapValuesOfCastValue", runFunction: run_DictionaryCompactMapValuesOfCastValue, tags: [.validation, .api, .Dictionary]),
|
|
]
|
|
|
|
@inline(never)
|
|
public func run_DictionaryCompactMapValuesOfNilValue(_ N: Int) {
|
|
let size = 100
|
|
var dict = [Int: Int?](minimumCapacity: size)
|
|
|
|
// Fill Dictionary
|
|
for i in 1...size {
|
|
if i % 2 == 0 {
|
|
dict[i] = nil
|
|
} else {
|
|
dict[i] = i
|
|
}
|
|
}
|
|
CheckResults(dict.count == size / 2)
|
|
|
|
var refDict = [Int: Int]()
|
|
for i in stride(from: 1, to: 100, by: 2) {
|
|
refDict[i] = i
|
|
}
|
|
|
|
var newDict = [Int: Int]()
|
|
for _ in 1...1000*N {
|
|
newDict = dict.compactMapValues({$0})
|
|
if newDict != refDict {
|
|
break
|
|
}
|
|
}
|
|
|
|
CheckResults(newDict == refDict)
|
|
}
|
|
|
|
@inline(never)
|
|
public func run_DictionaryCompactMapValuesOfCastValue(_ N: Int) {
|
|
let size = 100
|
|
var dict = [Int: String](minimumCapacity: size)
|
|
|
|
// Fill Dictionary
|
|
for i in 1...size {
|
|
if i % 2 == 0 {
|
|
dict[i] = "dummy"
|
|
} else {
|
|
dict[i] = "\(i)"
|
|
}
|
|
}
|
|
|
|
CheckResults(dict.count == size)
|
|
|
|
var refDict = [Int: Int]()
|
|
for i in stride(from: 1, to: 100, by: 2) {
|
|
refDict[i] = i
|
|
}
|
|
|
|
var newDict = [Int: Int]()
|
|
for _ in 1...1000*N {
|
|
newDict = dict.compactMapValues(Int.init)
|
|
if newDict != refDict {
|
|
break
|
|
}
|
|
}
|
|
|
|
CheckResults(newDict == refDict)
|
|
}
|
|
|