minor optimizations - can now reach about 2200 samples per second
minor performance optimization - still around 2k SPS
minor optimizations - with pypy it does about 10k sps
can do 8k samples per second using pypy