The spikes you are mentioning might be due to the OS lowering your process priority. If you are on a FreeBSD machine, try running rtprio(1) to avoid the OS changing the process priority upon extensive CPU usage.
From Norvig's post:
But the main message is that the mean and median stay
about the same even as we sample more, but the maximum
keeps going up--dramatically. The standard deviation
edges up too, but mostly because of the very few very
long times that are way out beyond the 99th percentile.
This is a heavy-tailed distribution, not a normal one.With languages like Python and Clojure several background processes (like GC pauses) could also contribute to some drops in throughput.
Of course, it would be easy to tell these cases apart by counting operations (backtracks, etc) rather than time.