Я написал базовую демонстрацию Game of Life, чтобы узнать немного о ES6 / typedArray. С полем 600×600 (на моем Macbook Air) я получаю ~ 57 кадров в секунду в Firefox Nightly (согласно about:config >layers.acceleration.draw-fps), что вполне приемлемо. Однако в Chrome у меня в среднем 3,5 кадра в секунду (измерено с помощью счетчика частоты кадров инструментов разработчика).
Путем некоторой отладки (см. коммиты в репозитории) я сузил медленный код до раздела, который создает несколько активных соседей для каждой ячейки. Вычисление всего поля занимает где-то около 18-19 мс в Firefox (что соответствует производительности около 60 кадров в секунду), но 175-185 мс в Chrome. Комментирование следующего кода, очевидно, ломает демонстрацию, но выравнивает производительность остальных кодов (т. е. медленная часть — это не рендеринг холста).
liveNeighbours = liveNeighbours + field[index - width - 1]
+ field[index - width]
+ field[index - width + 1]
+ field[index - 1]
+ field[index + 1]
+ field[index + width - 1]
+ field[index + width]
+ field[index + width + 1];
Чтобы вы могли увидеть проблему, я поместил код в CodePen: http://codepen.io/anon/pen/aNdzPP
Может ли кто-нибудь указать, что я делаю неправильно, или Chrome просто патологически медленный с этим JS? Если это так, я зарегистрирую ошибку, но я хотел убедиться, что не делаю глупостей.