Good catch. I have no idea the reason behind this behaviour. It would be interesting to know why.
On Wednesday, May 21, 2014 7:58:02 PM UTC+2, Peter Simon wrote: > > I don't think this slowness is because of type instability, as I > understand the concept. On a 64-bit machine `Int === Int64` is true. > Also, the following is also slow and results in lots of allocation: > > local i::Int64 > > as does simply declaring > > local i > > However, if one completely leaves off the declaration/initialization of i > (and returns nothing), the code is again fast. Also > > local i::Int64 = 0 > > results in fast code. Apparently, if the loop variable is to be retained > after the loop terminates, then for best performance it must be initialized > and not just declared `local` prior to the loop I'm not sure why this is > so. > > --Peter >