I'm not sure I buy the arguments about cache, or it's something where I'd want empirical performance analysis to back up the model claims. Allocators will tend to place allocations next to each other in memory, so one might reasonably expect that objects allocated near each other (in time) to have decent memory locality. Likewise, I'm pretty sure cache sizes have grown over time, and looking at the provided chart, even going to L3 isn't the end of the world.
I'd expect that one of the biggest slowdowns that's not talked about is dynamic dispatch. Among other things, having to invoke functions by pointer prevents a lot of possible optimization (e.g., inlining of short functions). Function calls are pretty expensive, and having to do lots of function calls "for real" could also be a huge performance problem.
Of course, yes, garbage collection is a huge problem.
1 comment
[ 3.8 ms ] story [ 17.1 ms ] threadI'd expect that one of the biggest slowdowns that's not talked about is dynamic dispatch. Among other things, having to invoke functions by pointer prevents a lot of possible optimization (e.g., inlining of short functions). Function calls are pretty expensive, and having to do lots of function calls "for real" could also be a huge performance problem.
Of course, yes, garbage collection is a huge problem.