Q: Velocity.js + SVG performance problems I need to create ~20 continuously flashing dots. For performance reasons I chose Velocity.js + SVG. Satisfied with the results (the animation runs smoothly), I am confused about CPU/GPU overload.
Here is a code snippet, simplified for the purpose of this question (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 objects:
<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>

Five minutes of continuous play and CPU temperature goes up to 150%. I am using Chrome 39 (64-bit) on OS X Yosemite 10.10.
Caching selectors and manipulating with Velocity.js sequences did not help.
I tried to find any memory leaks with Timeline Tool in Chrome, but in vain.
Why such an simple animation causes my laptop to burn in flames?

A: 1. Approach: SMIL
Instead of manipulating the SVG/DOM in a very fast way, you could make use of SMIL. With SMIL you can define simple animations without the need of interacting with the DOM by yourself.
An animation can look like this:
<circle id="my-circle" r="30" cx="50" cy="50" fill="orange" />

  <animate 
    xlink:href="#my-circle"
    attributeName="cx"
    from="50"
    to="450" 
    dur="1s"
    begin="click"
    fill="freeze" />

(Source: http://css-tricks.com/guide-svg-animations-smil/)
I think this will dramatically reduce the CPU load.
You are actually setting the DOM to new values all the time which causes the CPU load. Defining a "real" animation will be much more efficient. 
2. Approach: Do not use setInterval
It is also possible that you are causing the high load by using setInterval. As it will call your function again in 500 ms  (even if it is still running).
