OK I found the cause of that weirdness. I had slightly changed  my test code since I posted it here weeks ago. After undoing that change I&#x27;m seeing the same thing you do.<p>But this raises more questions, because what I changed is the test code generation. I&#x27;m now generating a million different strings instead of adding the same string a million times (note the \(i) at the end of the string):<p><pre><code>    func generateTestData() -&gt; [String] {
        var a = [String]()
        for i in 0..&lt;N {
            a.append(&quot;,,abc, 123  ,x, , more more more,\u{A0}and yet more, \(i)&quot;)
        }
        return a
    }
</code></pre>
The running time of generateTestData() isn&#x27;t what we measure but apparently the performance improvement you found only works if the same string is used every time. Otherwise performance drops.