Причина падения частоты кадров и в конечном итоге зависания браузера происходит из-за памяти, занятой элементом canvas. Я уже ответил на этот вопрос. Вы можете найти нить здесь .
Каждый раз, когда вы рисуете что-то на холсте, эта операция сохраняется на пути холста. Этот путь занимает больше памяти каждый раз, когда вы рисуете что-то на холсте. Если вы не очистите путь холста, у вас будет падение частоты кадров. Например, посмотрите на разницу во времени выполнения между вашим javascript и javascript ниже, который очищает путь холста,
var c = document.getElementById( 'c' );
ctx = c.getContext( '2d' );
var x = 100;
ctx.fillStyle= '#f00';
function loop()
{
ctx.beginPath();
ctx.fillRect( x, 100, 20, 20 );
++x;
}
setInterval( loop, 1 );