Checked on x86_64, v0.10.30 and v0.11.14-pre, linux.
Firslty, setInterval determines delay between executions. For setInterval(sleep(20), 100):
------|====----------------|====----------------|====---
0 20 120 140 240 260
DOM-version setInterval determines delay between runs:
------|====-----------|====-----------|====-----------|=
0 20 100 120 200 220 300
Use the following snippet to check it out:
var prev = Date.now();
setInterval(function() {
var s = Date.now();
while(Date.now() - s < 20);
var e = Date.now();
console.log('Start', s, 'End', e, 'Delta', s - prev);
prev = e;
}, 100);
Node v0.11.14-pre 'Delta': 102, 124, 119, 120, 120, ...
Node v0.10.30 'Delta': 101, 102, 100, 100, 100, ...
DOM 'Delta': 100, 80, 81, 80, 80, 81, ...
Secondly, overlay of calls:
var prev = Date.now();
setInterval(function() {
var s = Date.now();
while(Date.now() - s < 200);
var e = Date.now();
console.log('Start', s, 'End', e, 'Delta', s - prev);
prev = e;
}, 100);
Node v0.11.14-pre 'Delta': 101, 302, 300, 300, 300, ...
Node v0.10.30 'Delta': 101, 101, 100, 100, ...
DOM 'Delta': 101, 0, 0, 1, 0, 1, 0, 0, ...