[swift-evolution] [Review] SE-0007 Remove C-style for-loops with conditions and incrementers
Greg Parker
gparker at apple.com
Thu Dec 10 23:34:51 CST 2015
> On Dec 10, 2015, at 9:12 PM, Paul Cantrell via swift-evolution <swift-evolution at swift.org> wrote:
>
> David, I found the radical differences in our results troubling, so I did some digging. It turns out that the zip+stride code:
>
> …runs much faster if you actually use both i and j inside the loop:
>
> Weird, right? This is with optimization on (default “production” build). It smells like a compiler quirk.
>
> With that tweak, the zip+stride approach actually clocks in faster than the C-style for. Yes, you read that right: faster. Also smells like a quirk. Am I doing something fantastically stupid in my code? Or maybe it’s just my idiosyncratic taste in indentation? :P
One problem: zip+stride suffers tremendously at -Onone. One test looked like this (normalized elapsed time; smaller is better)
1.0 zip+stride -O
1.2 for(;;) -O
19.3 for(;;) -Onone
261.7 zip+stride -Onone
Presumably all of these can be improved with compiler work, but I don't know how far zip+stride can be pushed in the -Onone case.
--
Greg Parker gparker at apple.com Runtime Wrangler
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151210/dbdf2e3c/attachment.html>
More information about the swift-evolution
mailing list