mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
I think the benchmarking machinery moved while count(where:) was in limbo, so this was deprecated before the benchmark actually landed.
128 lines
7.0 KiB
Swift
128 lines
7.0 KiB
Swift
//===--- CountAlgo.swift --------------------------------------------------===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2018 Apple Inc. and the Swift project authors
|
|
// Licensed under Apache License v2.0 with Runtime Library Exception
|
|
//
|
|
// See https://swift.org/LICENSE.txt for license information
|
|
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
import TestsUtils
|
|
|
|
public let benchmarks = [
|
|
BenchmarkInfo(
|
|
name: "CountAlgoArray",
|
|
runFunction: run_CountAlgoArray,
|
|
tags: [.validation, .api]),
|
|
BenchmarkInfo(
|
|
name: "CountAlgoString",
|
|
runFunction: run_CountAlgoString,
|
|
tags: [.validation, .api],
|
|
legacyFactor: 5),
|
|
]
|
|
|
|
@inline(never)
|
|
public func run_CountAlgoArray(_ N: Int) {
|
|
for _ in 1...10*N {
|
|
check(numbers.count(where: { $0 & 4095 == 0 }) == 25)
|
|
}
|
|
}
|
|
|
|
@inline(never)
|
|
public func run_CountAlgoString(_ N: Int) {
|
|
let vowels = Set("aeiou")
|
|
for _ in 1...N {
|
|
check(text.count(where: vowels.contains) == 2014)
|
|
}
|
|
}
|
|
|
|
let numbers = Array(0..<100_000)
|
|
|
|
let text = """
|
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas tempus
|
|
dictum tellus placerat ultrices. Proin mauris risus, eleifend a elit ut,
|
|
semper consectetur nibh. Nulla ultricies est a vehicula rhoncus. Morbi
|
|
sollicitudin efficitur est a hendrerit. Interdum et malesuada fames ac ante
|
|
ipsum primis in faucibus. Lorem ipsum dolor sit amet, consectetur
|
|
adipiscing elit. Nulla facilisi. Sed euismod sagittis laoreet. Ut elementum
|
|
tempus ultrices. Donec convallis mauris at faucibus maximus.
|
|
Nullam in nunc sit amet ante tristique elementum quis ut eros. Fusce
|
|
dignissim, ante at efficitur dapibus, ex massa convallis nibh, et venenatis
|
|
leo leo sit amet nisl. Lorem ipsum dolor sit amet, consectetur adipiscing
|
|
elit. Quisque sed mi eu mi rutrum accumsan vel non massa. Nunc condimentum,
|
|
arcu eget interdum hendrerit, ipsum mi pretium felis, ut mollis erat metus
|
|
non est. Donec eu sapien id urna lobortis eleifend et eu ipsum. Mauris
|
|
purus dolor, consequat ac nulla a, vehicula sollicitudin nulla.
|
|
Phasellus a congue diam. Curabitur sed orci at sem laoreet facilisis eget
|
|
quis est. Pellentesque habitant morbi tristique senectus et netus et
|
|
malesuada fames ac turpis egestas. Maecenas justo tellus, efficitur id
|
|
velit at, mollis pellentesque mi. Vivamus maximus nibh et ipsum porttitor
|
|
facilisis. Curabitur cursus lobortis erat. Sed vitae eros et dolor feugiat
|
|
consequat. In ac massa in odio gravida dignissim. Praesent aliquam gravida
|
|
ullamcorper.
|
|
Etiam feugiat sit amet odio sed tincidunt. Duis dolor odio, posuere at
|
|
pretium sed, dignissim eu diam. Aenean eu convallis orci, vitae finibus
|
|
erat. Aliquam nec mollis tellus. Morbi luctus sed quam et vestibulum.
|
|
Praesent id diam tempus, consectetur tortor vel, auctor orci. Aliquam
|
|
congue ex eu sagittis sodales. Suspendisse non convallis nulla. Praesent
|
|
elementum semper augue, et fringilla risus ullamcorper id. Fusce eu lorem
|
|
sit amet augue fermentum tincidunt. In aliquam libero sit amet dui rhoncus,
|
|
ac scelerisque sem porttitor. Cras venenatis, nisi quis ullamcorper
|
|
dapibus, odio dolor rutrum magna, vel pellentesque sem lectus in tellus.
|
|
Proin faucibus leo iaculis nulla egestas molestie.
|
|
Phasellus vitae tortor vitae erat elementum feugiat vel vel enim. Phasellus
|
|
fringilla lacus sed venenatis dapibus. Phasellus sagittis vel neque ut
|
|
varius. Proin aliquam, lectus sit amet auctor finibus, lorem libero
|
|
pellentesque turpis, ac condimentum augue felis sit amet sem. Pellentesque
|
|
pharetra nisl nec est congue, in posuere felis maximus. In ut nulla
|
|
sodales, pharetra neque et, venenatis dui. Mauris imperdiet, arcu vel
|
|
hendrerit vehicula, elit massa consectetur purus, eu blandit nunc orci sit
|
|
amet turpis. Vestibulum ultricies id lorem id maximus. Pellentesque
|
|
feugiat, lacus et aliquet consequat, mi leo vehicula justo, dapibus dictum
|
|
mi quam convallis magna. Quisque id pulvinar dui, consequat gravida nisl.
|
|
Nam nec justo venenatis, tincidunt enim a, iaculis odio. Maecenas eget
|
|
lorem posuere, euismod nisl vel, pulvinar ex. Maecenas vitae risus ipsum.
|
|
Proin congue sem ante, sit amet sagittis odio mattis sit amet. Nullam et
|
|
nisi nulla.
|
|
Donec vel hendrerit metus. Praesent quis finibus erat. Aliquam erat
|
|
volutpat. Fusce sit amet ultricies tellus, vitae dictum dolor. Morbi auctor
|
|
dolor vel ligula pretium aliquam. Aenean lobortis vel magna vel ultricies.
|
|
Aenean porta urna vitae ornare porta. Quisque pretium dui diam, quis
|
|
iaculis odio venenatis non. Maecenas at lacus et ligula tincidunt feugiat
|
|
eu vel ipsum. Proin fermentum elit et quam tempus, eget pulvinar nisl
|
|
pharetra.
|
|
Mauris sodales tempus erat in lobortis. Duis vitae lacinia sapien.
|
|
Pellentesque vitae massa eget orci sodales aliquet. Orci varius natoque
|
|
penatibus et magnis dis parturient montes, nascetur ridiculus mus. Fusce
|
|
nisi arcu, egestas vel consectetur eu, auctor et metus. In ultricies ligula
|
|
felis, vitae pellentesque dolor tempor ac. Praesent mi magna, ultrices ut
|
|
ultrices vel, sollicitudin a leo.
|
|
Nam porta, nisi in scelerisque consequat, leo lacus accumsan massa,
|
|
venenatis faucibus tellus quam eget tellus. Curabitur pulvinar, tellus ac
|
|
facilisis consectetur, lacus lacus venenatis est, eu pretium orci augue
|
|
gravida nunc. Aenean odio tellus, facilisis et finibus id, varius vitae
|
|
diam. Aenean at suscipit sem. Suspendisse porta neque at nibh semper, sit
|
|
amet suscipit libero egestas. Donec commodo vitae justo vitae laoreet.
|
|
Suspendisse dignissim erat id ante maximus porta. Curabitur hendrerit
|
|
maximus odio, et maximus felis malesuada eu. Integer dapibus finibus diam,
|
|
quis convallis metus bibendum non.
|
|
In vel vulputate nisi, non lacinia nunc. Nullam vitae ligula finibus,
|
|
varius arcu in, pellentesque ipsum. Morbi vel velit tincidunt quam cursus
|
|
lacinia non in neque. Suspendisse id feugiat nibh. Vestibulum egestas eu
|
|
leo viverra fringilla. Curabitur ultrices sollicitudin libero, non sagittis
|
|
felis consectetur id. Aenean non metus eget leo ornare porta sed in metus.
|
|
Nullam quis fermentum sapien, sit amet sodales mi. Maecenas nec purus urna.
|
|
Phasellus condimentum enim nec magna convallis, eu lacinia libero
|
|
scelerisque. Suspendisse justo libero, maximus in auctor id, euismod quis
|
|
risus. Nam eget augue diam. Ut id risus pulvinar elit consectetur varius.
|
|
Aliquam tincidunt tortor pretium feugiat tempor. Nunc nec feugiat ex.
|
|
Ut pulvinar augue eget pharetra vehicula. Phasellus malesuada tempor sem,
|
|
ut tincidunt velit convallis in. Vivamus luctus libero vitae massa tempus,
|
|
id elementum urna iaculis. Sed eleifend quis purus quis convallis. In
|
|
rhoncus interdum mollis. Pellentesque dictum euismod felis, eget lacinia
|
|
elit blandit vel. Praesent elit velit, pharetra a sodales in, cursus vitae
|
|
tortor. In vitae scelerisque tellus.
|
|
"""
|