<div dir="ltr">Using Swift 3 I have a function that&#39;s called extremely frequently and is appearing regularly in Profiler runs. The function takes two Set&lt;String&gt; instances and simply attempts to determine whether all items from Set A are present in Set B (it&#39;s important to note that Set B may well contain additional items).<div><br></div><div>I&#39;ve attempted to approach the problem in two ways:</div><div><br></div><div><div>let diff = a.subtracting(b)</div><div>guard diff.count == 0 else { return false }</div></div><div><br></div><div>And also by simply iterating over the contents of Set A, like so:</div><div><br></div><div><div>for item in a {</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>if !b.contains(item) {</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                </span>return false</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>}</div><div>}</div></div><div><br></div><div>Both ultimately end up spending the majority of their time in String._compareDeterministicUnicodeCollaton(String) -&gt; Int. Which makes sense, given what I&#39;m doing - but ideally I&#39;d like to come up with a more efficient way of performing the above check. Swift&#39;s String representation is incredibly robust, but for my needs the strings could be adequately represented in ASCII encoding. I&#39;ve also considered storing and comparing the hashValue of the strings, to speed up comparisons...</div><div><br></div><div>Hopefully this is an acceptable question for this mailing list. I&#39;m aware that this may not be a Swift-specific question and could well be solved with a more efficient data structure or approach, but I&#39;d really appreciate some input from more experienced Swift developers :-)</div></div>