Re:Debunking the Java Performance Myth
by yoklov on Sunday October 22, 2017 @10:51AM
(#15527059)
Declaring a primitive variable inside vs outside a loop in c or c++ will have no effect when compiled with optimizations on by any major compiler. For non-primitive types it will depend on a number of factors, and the better choice for perf could go either way.
[ Parent
| on HN ]
Yes, because if the loop is not always-executing, it may be cheaper to not initialize the complex object, even if it is safe to so.
I've also (recently) had poor performance on MSVC when "outside the loop" meant "a function argument", for a type that was essentially a struct wrapping a single primitive. It ended up being ABI weirdness that was confusing MSVC (and forceinline ended up fixing it).