It froze up for me a little when there got to be too many projectiles on screen, but it ran quite smoothly in the early parts of the game. Did you say that you were making this from scratch in JS? Mine's the same; I only used two libraries: one for 2D noise and one for audio.