So, that's the best general wisdom I know. Don't even bother trying to guess where you'll have performance problems. Profile it.
So, that's the best general wisdom I know. Don't even bother trying to guess where you'll have performance problems. Profile it.
I've seen very unexpected results doing this. In one case, I put the inner loop in a separate function to enable swapping implementations and make it simpler to time. Surprisingly, the overall program ran faster without any other changes. Just pulling the inner loop into a function of its own sped things up.
My best guess was that the compiler was willing to put more effort into optimization on the smaller function. This contradicts common wisdom about function call overhead, and it also shows another level of complexity in the problem: Some compiler optimizations are exponential in their cost, so they punt if you put too much of your code in one block or function.
Also note that I wasn't able to prove this is what happened. It's just my best guess based on what I was able to see and infer.