1
+ //===--- CountAlgo.swift --------------------------------------------------===//
2
+ //
3
+ // This source file is part of the Swift.org open source project
4
+ //
5
+ // Copyright (c) 2014 - 2018 Apple Inc. and the Swift project authors
6
+ // Licensed under Apache License v2.0 with Runtime Library Exception
7
+ //
8
+ // See https://swift.org/LICENSE.txt for license information
9
+ // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
10
+ //
11
+ //===----------------------------------------------------------------------===//
12
+ import TestsUtils
13
+
14
+ public let CountAlgo = [
15
+ BenchmarkInfo (
16
+ name: " CountAlgoArray " ,
17
+ runFunction: run_CountAlgoArray,
18
+ tags: [ . validation, . api] ) ,
19
+ BenchmarkInfo (
20
+ name: " CountAlgoString " ,
21
+ runFunction: run_CountAlgoString,
22
+ tags: [ . validation, . api] ) ,
23
+ ]
24
+
25
+ @inline ( never)
26
+ public func run_CountAlgoArray( _ N: Int ) {
27
+ for _ in 1 ... 10 * N {
28
+ CheckResults ( numbers. count ( where: { $0 & 4095 == 0 } ) == 25 )
29
+ }
30
+ }
31
+
32
+ @inline ( never)
33
+ public func run_CountAlgoString( _ N: Int ) {
34
+ let vowels = Set ( " aeiou " )
35
+ for _ in 1 ... 5 * N {
36
+ CheckResults ( text. count ( where: vowels. contains) == 2014 )
37
+ }
38
+ }
39
+
40
+ let numbers = Array ( 0 ..< 100_000 )
41
+
42
+ let text = """
43
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas tempus
44
+ dictum tellus placerat ultrices. Proin mauris risus, eleifend a elit ut,
45
+ semper consectetur nibh. Nulla ultricies est a vehicula rhoncus. Morbi
46
+ sollicitudin efficitur est a hendrerit. Interdum et malesuada fames ac ante
47
+ ipsum primis in faucibus. Lorem ipsum dolor sit amet, consectetur
48
+ adipiscing elit. Nulla facilisi. Sed euismod sagittis laoreet. Ut elementum
49
+ tempus ultrices. Donec convallis mauris at faucibus maximus.
50
+ Nullam in nunc sit amet ante tristique elementum quis ut eros. Fusce
51
+ dignissim, ante at efficitur dapibus, ex massa convallis nibh, et venenatis
52
+ leo leo sit amet nisl. Lorem ipsum dolor sit amet, consectetur adipiscing
53
+ elit. Quisque sed mi eu mi rutrum accumsan vel non massa. Nunc condimentum,
54
+ arcu eget interdum hendrerit, ipsum mi pretium felis, ut mollis erat metus
55
+ non est. Donec eu sapien id urna lobortis eleifend et eu ipsum. Mauris
56
+ purus dolor, consequat ac nulla a, vehicula sollicitudin nulla.
57
+ Phasellus a congue diam. Curabitur sed orci at sem laoreet facilisis eget
58
+ quis est. Pellentesque habitant morbi tristique senectus et netus et
59
+ malesuada fames ac turpis egestas. Maecenas justo tellus, efficitur id
60
+ velit at, mollis pellentesque mi. Vivamus maximus nibh et ipsum porttitor
61
+ facilisis. Curabitur cursus lobortis erat. Sed vitae eros et dolor feugiat
62
+ consequat. In ac massa in odio gravida dignissim. Praesent aliquam gravida
63
+ ullamcorper.
64
+ Etiam feugiat sit amet odio sed tincidunt. Duis dolor odio, posuere at
65
+ pretium sed, dignissim eu diam. Aenean eu convallis orci, vitae finibus
66
+ erat. Aliquam nec mollis tellus. Morbi luctus sed quam et vestibulum.
67
+ Praesent id diam tempus, consectetur tortor vel, auctor orci. Aliquam
68
+ congue ex eu sagittis sodales. Suspendisse non convallis nulla. Praesent
69
+ elementum semper augue, et fringilla risus ullamcorper id. Fusce eu lorem
70
+ sit amet augue fermentum tincidunt. In aliquam libero sit amet dui rhoncus,
71
+ ac scelerisque sem porttitor. Cras venenatis, nisi quis ullamcorper
72
+ dapibus, odio dolor rutrum magna, vel pellentesque sem lectus in tellus.
73
+ Proin faucibus leo iaculis nulla egestas molestie.
74
+ Phasellus vitae tortor vitae erat elementum feugiat vel vel enim. Phasellus
75
+ fringilla lacus sed venenatis dapibus. Phasellus sagittis vel neque ut
76
+ varius. Proin aliquam, lectus sit amet auctor finibus, lorem libero
77
+ pellentesque turpis, ac condimentum augue felis sit amet sem. Pellentesque
78
+ pharetra nisl nec est congue, in posuere felis maximus. In ut nulla
79
+ sodales, pharetra neque et, venenatis dui. Mauris imperdiet, arcu vel
80
+ hendrerit vehicula, elit massa consectetur purus, eu blandit nunc orci sit
81
+ amet turpis. Vestibulum ultricies id lorem id maximus. Pellentesque
82
+ feugiat, lacus et aliquet consequat, mi leo vehicula justo, dapibus dictum
83
+ mi quam convallis magna. Quisque id pulvinar dui, consequat gravida nisl.
84
+ Nam nec justo venenatis, tincidunt enim a, iaculis odio. Maecenas eget
85
+ lorem posuere, euismod nisl vel, pulvinar ex. Maecenas vitae risus ipsum.
86
+ Proin congue sem ante, sit amet sagittis odio mattis sit amet. Nullam et
87
+ nisi nulla.
88
+ Donec vel hendrerit metus. Praesent quis finibus erat. Aliquam erat
89
+ volutpat. Fusce sit amet ultricies tellus, vitae dictum dolor. Morbi auctor
90
+ dolor vel ligula pretium aliquam. Aenean lobortis vel magna vel ultricies.
91
+ Aenean porta urna vitae ornare porta. Quisque pretium dui diam, quis
92
+ iaculis odio venenatis non. Maecenas at lacus et ligula tincidunt feugiat
93
+ eu vel ipsum. Proin fermentum elit et quam tempus, eget pulvinar nisl
94
+ pharetra.
95
+ Mauris sodales tempus erat in lobortis. Duis vitae lacinia sapien.
96
+ Pellentesque vitae massa eget orci sodales aliquet. Orci varius natoque
97
+ penatibus et magnis dis parturient montes, nascetur ridiculus mus. Fusce
98
+ nisi arcu, egestas vel consectetur eu, auctor et metus. In ultricies ligula
99
+ felis, vitae pellentesque dolor tempor ac. Praesent mi magna, ultrices ut
100
+ ultrices vel, sollicitudin a leo.
101
+ Nam porta, nisi in scelerisque consequat, leo lacus accumsan massa,
102
+ venenatis faucibus tellus quam eget tellus. Curabitur pulvinar, tellus ac
103
+ facilisis consectetur, lacus lacus venenatis est, eu pretium orci augue
104
+ gravida nunc. Aenean odio tellus, facilisis et finibus id, varius vitae
105
+ diam. Aenean at suscipit sem. Suspendisse porta neque at nibh semper, sit
106
+ amet suscipit libero egestas. Donec commodo vitae justo vitae laoreet.
107
+ Suspendisse dignissim erat id ante maximus porta. Curabitur hendrerit
108
+ maximus odio, et maximus felis malesuada eu. Integer dapibus finibus diam,
109
+ quis convallis metus bibendum non.
110
+ In vel vulputate nisi, non lacinia nunc. Nullam vitae ligula finibus,
111
+ varius arcu in, pellentesque ipsum. Morbi vel velit tincidunt quam cursus
112
+ lacinia non in neque. Suspendisse id feugiat nibh. Vestibulum egestas eu
113
+ leo viverra fringilla. Curabitur ultrices sollicitudin libero, non sagittis
114
+ felis consectetur id. Aenean non metus eget leo ornare porta sed in metus.
115
+ Nullam quis fermentum sapien, sit amet sodales mi. Maecenas nec purus urna.
116
+ Phasellus condimentum enim nec magna convallis, eu lacinia libero
117
+ scelerisque. Suspendisse justo libero, maximus in auctor id, euismod quis
118
+ risus. Nam eget augue diam. Ut id risus pulvinar elit consectetur varius.
119
+ Aliquam tincidunt tortor pretium feugiat tempor. Nunc nec feugiat ex.
120
+ Ut pulvinar augue eget pharetra vehicula. Phasellus malesuada tempor sem,
121
+ ut tincidunt velit convallis in. Vivamus luctus libero vitae massa tempus,
122
+ id elementum urna iaculis. Sed eleifend quis purus quis convallis. In
123
+ rhoncus interdum mollis. Pellentesque dictum euismod felis, eget lacinia
124
+ elit blandit vel. Praesent elit velit, pharetra a sodales in, cursus vitae
125
+ tortor. In vitae scelerisque tellus.
126
+ """
0 commit comments