diff --git a/stdlib/public/core/Set.swift b/stdlib/public/core/Set.swift index 6c684caaea977..91a67b3d15f2e 100644 --- a/stdlib/public/core/Set.swift +++ b/stdlib/public/core/Set.swift @@ -1223,8 +1223,10 @@ extension Set { @inlinable public __consuming func intersection(_ other: Set) -> Set { var newSet = Set() - for member in self { - if other.contains(member) { + let (smaller, larger) = + count < other.count ? (self, other) : (other, self) + for member in smaller { + if larger.contains(member) { newSet.insert(member) } }