Как я уже упоминал в своем комментарии, загрузка процессора !=
использование памяти.Инструменты разработчика Chrome позволяют легко профилировать ваше приложение, чтобы найти код, который потребляет все циклы ЦП.
Откройте свое приложение, откройте инструменты разработчика и перейдите на вкладку «Профили».Нажмите кнопку записи (черный круг).Он станет красным;Chrome теперь записывает использование процессора.Подождите несколько секунд и снова нажмите кнопку «Запись».Теперь вы увидите использование процессора по функциям.
В этом случае мы можем видеть, что draw_grid()
потребило 92% процессорного времени - мы нашли нашего виновника!
Я внес некоторые изменения в функцию draw_grid
:
function draw_grid(){
c.strokeStyle = '#333';
for (var i = poff; i < w; i += scale) {
c.beginPath();
c.moveTo(0, i);
c.lineTo(w, i);
c.closePath();
c.stroke();
}
for (var j = poff; j < h; j += scale) {
c.beginPath();
c.moveTo(j, 0);
c.lineTo(j, h);
c.closePath();
c.stroke();
}
}
Загрузка ЦП теперь никогда не превышает 5%.
Несколько замечаний:
- Я добавил
beginPath()
и closePath()
и переместил stroke()
в каждую итерацию цикла. - Я изменил размер каждой строки с константы 500px, чтобы использовать соответствующую переменную.
- Вам нужно установить
strokeStyle
только один раз.Он остается прежним, если вы не измените его снова. - Вы должны написать
var
в инициализаторе вашего цикла, чтобы ограничить область действия переменной (в данном случае i
и j
) локальной функцией.В противном случае вы создаете глобальную переменную, что по ряду причин является плохой идеей.