3 ms·
Like I mentioned - my memory is pretty hazy about the specific speedups. Yes, N^2 to NlogN feels like it should be a bigger factor, but remember that constants
by mynegation 6y ago
Like I mentioned - my memory is pretty hazy about the specific speedups.
Yes, N^2 to NlogN feels like it should be a bigger factor, but remember that constants in front of this matter. You are replacing 2-level nested but very straightforward loops that rip through cached memory at blazing speed without any disruption to CPU pipelines with a single loop that involves quite a bit of condition checking and array element swaps (cache is busted, pipelines are busted - conditions are very hard to predict). You gain some, you lose some.