Hacker News new | ask | show | jobs
by toth 3688 days ago
The function call is not being optimized out, it's being hoisted outside the loop. I.e., it is as if the code was written as:

    let result = flatuseStruct(outputData)
    for _ in 0..<iterations {
        assert(result == 8644311667)
        total = total + UInt64(result)
    }
The counter will still be correct, but you are not measuring what you think you are measuring.
1 comments

This makes sense!

Changed the iteration to:

   for i in 0..<iterations {
     let result = flatuseStruct(outputData, start:i)
     assert(result == 8644311666 + Int(i))
     total2 = total2 + UInt64(result)
   }
now result is around 43ms

Thanks for pointing it out. Have to check if there are so other things involved, but that might be it.