Skip to content

Commit e77b025

Browse files
Optimize Sequence.uniquified() (#201)
* Improve performance of Sequence.uniquified() * Use Element not Iterator.Element * Use Set.insert instead of Dictionary.updateValue * Update Sources/ArgumentParser/Utilities/SequenceExtensions.swift got it - sorry about that! Co-authored-by: Nate Cook <natecook@apple.com> Co-authored-by: Nate Cook <natecook@apple.com>
1 parent 2092075 commit e77b025

File tree

1 file changed

+3
-8
lines changed

1 file changed

+3
-8
lines changed

Sources/ArgumentParser/Utilities/SequenceExtensions.swift

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,9 @@
99
//
1010
//===----------------------------------------------------------------------===//
1111

12-
extension Sequence where Element: Equatable {
12+
extension Sequence where Element: Hashable {
1313
func uniquified() -> [Element] {
14-
var sequence = Array<Element>()
15-
for element in self {
16-
if !sequence.contains(element) {
17-
sequence.append(element)
18-
}
19-
}
20-
return sequence
14+
var seen = Set<Element>()
15+
return self.filter { seen.insert($0).0 }
2116
}
2217
}

0 commit comments

Comments
 (0)