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