diff --git a/benchmark/CMakeLists.txt b/benchmark/CMakeLists.txt index 2dcdefddaa6c5..21da01d575207 100644 --- a/benchmark/CMakeLists.txt +++ b/benchmark/CMakeLists.txt @@ -58,7 +58,6 @@ set(SWIFT_BENCH_MODULES single-source/ClassArrayGetter single-source/Codable single-source/Combos - single-source/CountAlgo single-source/DataBenchmarks single-source/DeadArray single-source/DictOfArraysToArrayOfDicts diff --git a/benchmark/single-source/CountAlgo.swift b/benchmark/single-source/CountAlgo.swift deleted file mode 100644 index 62dd92dbe1717..0000000000000 --- a/benchmark/single-source/CountAlgo.swift +++ /dev/null @@ -1,127 +0,0 @@ -//===--- 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 CountAlgo = [ - 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 { - CheckResults(numbers.count(where: { $0 & 4095 == 0 }) == 25) - } -} - -@inline(never) -public func run_CountAlgoString(_ N: Int) { - let vowels = Set("aeiou") - for _ in 1...N { - CheckResults(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. - """ diff --git a/benchmark/utils/main.swift b/benchmark/utils/main.swift index b6b9d950e02b3..89bcd770023d0 100644 --- a/benchmark/utils/main.swift +++ b/benchmark/utils/main.swift @@ -46,7 +46,6 @@ import Chars import ClassArrayGetter import Codable import Combos -import CountAlgo import DataBenchmarks import DeadArray import DictOfArraysToArrayOfDicts @@ -217,7 +216,6 @@ registerBenchmark(CharacterPropertiesPrecomputed) registerBenchmark(Chars) registerBenchmark(Codable) registerBenchmark(Combos) -registerBenchmark(CountAlgo) registerBenchmark(ClassArrayGetter) registerBenchmark(DataBenchmarks) registerBenchmark(DeadArray) diff --git a/stdlib/public/core/SequenceAlgorithms.swift b/stdlib/public/core/SequenceAlgorithms.swift index 94834a01d0b89..3d1af07ad6885 100644 --- a/stdlib/public/core/SequenceAlgorithms.swift +++ b/stdlib/public/core/SequenceAlgorithms.swift @@ -572,50 +572,6 @@ extension Sequence where Element : Equatable { } } -//===----------------------------------------------------------------------===// -// count(where:) -//===----------------------------------------------------------------------===// - -extension Sequence { - /// Returns the number of elements in the sequence that satisfy the given - /// predicate. - /// - /// You can use this method to count the number of elements that pass a test. - /// The following example finds the number of names that are fewer than - /// five characters long: - /// - /// let names = ["Jacqueline", "Ian", "Amy", "Juan", "Soroush", "Tiffany"] - /// let shortNameCount = names.count(where: { $0.count < 5 }) - /// // shortNameCount == 3 - /// - /// To find the number of times a specific element appears in the sequence, - /// use the equal to operator (`==`) in the closure to test for a match. - /// - /// let birds = ["duck", "duck", "duck", "duck", "goose"] - /// let duckCount = birds.count(where: { $0 == "duck" }) - /// // duckCount == 4 - /// - /// The sequence must be finite. - /// - /// - Parameter predicate: A closure that takes each element of the sequence - /// as its argument and returns a Boolean value indicating whether - /// the element should be included in the count. - /// - Returns: The number of elements in the sequence that satisfy the given - /// predicate. - @inlinable - public func count( - where predicate: (Element) throws -> Bool - ) rethrows -> Int { - var count = 0 - for e in self { - if try predicate(e) { - count += 1 - } - } - return count - } -} - //===----------------------------------------------------------------------===// // reduce() //===----------------------------------------------------------------------===// diff --git a/test/api-digester/Outputs/stability-stdlib-abi.swift.expected b/test/api-digester/Outputs/stability-stdlib-abi.swift.expected index 6011299e955d7..e72af2fcd8625 100644 --- a/test/api-digester/Outputs/stability-stdlib-abi.swift.expected +++ b/test/api-digester/Outputs/stability-stdlib-abi.swift.expected @@ -85,3 +85,5 @@ Subscript String.UnicodeScalarView.subscript(_:) has been removed Subscript Substring.subscript(_:) has been removed Func Collection.makeIterator() has self access kind changing from NonMutating to __Consuming + +Func Sequence.count(where:) has been removed diff --git a/test/api-digester/Outputs/stability-stdlib-source.swift.expected b/test/api-digester/Outputs/stability-stdlib-source.swift.expected index 0b97f2c39dfac..cc842d3f26b66 100644 --- a/test/api-digester/Outputs/stability-stdlib-source.swift.expected +++ b/test/api-digester/Outputs/stability-stdlib-source.swift.expected @@ -4,3 +4,5 @@ Protocol SIMD has added inherited protocol Decodable Protocol SIMD has added inherited protocol Encodable Protocol SIMD has generic signature change from <Self : CustomStringConvertible, Self : ExpressibleByArrayLiteral, Self : Hashable, Self : SIMDStorage, Self.MaskStorage : SIMD, Self.MaskStorage.Scalar : FixedWidthInteger, Self.MaskStorage.Scalar : SignedInteger> to <Self : CustomStringConvertible, Self : Decodable, Self : Encodable, Self : ExpressibleByArrayLiteral, Self : Hashable, Self : SIMDStorage, Self.MaskStorage : SIMD, Self.MaskStorage.Scalar : FixedWidthInteger, Self.MaskStorage.Scalar : SignedInteger> Protocol SIMDStorage has generic signature change from <Self.Scalar : Hashable> to <Self.Scalar : Decodable, Self.Scalar : Encodable, Self.Scalar : Hashable> + +Func Sequence.count(where:) has been removed diff --git a/validation-test/stdlib/SequenceType.swift.gyb b/validation-test/stdlib/SequenceType.swift.gyb index f4402c6aa5dda..4643274767296 100644 --- a/validation-test/stdlib/SequenceType.swift.gyb +++ b/validation-test/stdlib/SequenceType.swift.gyb @@ -628,21 +628,6 @@ SequenceTypeTests.test("allSatisfy/Predicate") { } } -//===----------------------------------------------------------------------===// -// count(where:) -//===----------------------------------------------------------------------===// - -SequenceTypeTests.test("count/Predicate") { - for test in predicateCountTests { - let s = MinimalSequence<OpaqueValue<Int>>( - elements: test.sequence.map { OpaqueValue($0) }) - expectEqual( - test.expected, - s.count(where: { test.includeElement($0.value) }), - stackTrace: SourceLocStack().with(test.loc)) - } -} - //===----------------------------------------------------------------------===// // reduce() //===----------------------------------------------------------------------===//