Мне нужно создать ~ 20 непрерывно мигающих точек. По соображениям производительности я выбрал Velocity.js + SVG. Удовлетворенный результатами (анимация работает гладко), я смущен о перегрузке CPU/GPU.Проблемы с производительностью Velocity.js + SVG
Вот фрагмент кода, упрощена для целей данного вопроса (http://codepen.io/anon/pen/NPjLVq?editors=101):
var i = 0;
setInterval(function()
{
if(i > 9) i = 0;
var radius = $('#dot' + i).data('r');
$('#dot' + i)
.velocity({ opacity: 0.2 }, { duration: 500, queue: false })
.velocity({ r: 4 * radius }, { duration: 500 })
.velocity({ r: radius }, { duration: 500 })
.velocity({ opacity: 1.0 }, { duration: 600 - 15 * radius });
i++;
}, 500);
SVG объектов:
<svg width="700px" height="200px">
<circle cx="100" cy="100" r="5" data-r="5" class="dot" id="dot0"/>
<circle cx="150" cy="100" r="13" data-r="13" class="dot" id="dot1"/>
<circle cx="200" cy="100" r="3" data-r="3" class="dot" id="dot2"/>
(...)
</svg>
Пять минут непрерывной игры и температура процессора поднимается до 150 %. Я использую Chrome 39 (64-разрядный) для OS X Yosemite 10.10.
Кэширующие селектора и манипуляции с последовательностями Velocity.js не помогли.
Я попытался найти утечку памяти с помощью инструмента Timeline Tool в Chrome, но напрасно.
Почему такая простая анимация заставляет мой ноутбук гореть в огне?