Skip to content

Commit 22f5dfa

Browse files
author
Dave Abrahams
authored
Merge pull request #5264 from shajrawi/idasany_perf
improve set's conditional downcast performance by over 2X
2 parents 76b5afc + eeae7e1 commit 22f5dfa

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

stdlib/public/core/HashedCollections.swift.gyb

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1390,10 +1390,15 @@ public func _setDownCastConditionalIndirect<SourceValue, TargetValue>(
13901390
public func _setDownCastConditional<BaseValue, DerivedValue>(
13911391
_ source: Set<BaseValue>
13921392
) -> Set<DerivedValue>? {
1393-
return try? Set(
1394-
source.lazy.map {
1395-
try ($0 as? DerivedValue).unwrappedOrError()
1396-
})
1393+
var result = Set<DerivedValue>(minimumCapacity: source.count)
1394+
for member in source {
1395+
if let derivedMember = member as? DerivedValue {
1396+
result.insert(derivedMember)
1397+
continue
1398+
}
1399+
return nil
1400+
}
1401+
return result
13971402
}
13981403

13991404
#if _runtime(_ObjC)

0 commit comments

Comments
 (0)