Even latest desktop processors have a L3 cache of only a few MB.
Even latest desktop processors have a L3 cache of only a few MB.
And sufficiently aggressive inlining will increase the program size further. This might or might not be compensated for by the increase in instruction-pointer locality.
So the arguments against inlining apply even more strongly when talking about every program being statically linked, the same code (standard library) will exist in memory in many places, and will get dumped and reloaded to L2/L3 every process swap. Nothing slower than having to wait for something to be faulted in.
There is something slower. When your executables are so large that you have to hit the swap drive on process swaps.
I am under the impression that when process switches the CPU caches are flushed.
(That's one reason why it's beneficial to schedule a process on the same CPU if possible - the data is still in the cache)