window.postMessage vs while loop vs setInterval vs setTimeout

Benchmark created by David Talley on


Description

Checking to how much slower window.postMessage(run, '*') is than using a while loop

Setup

var countTo = 1000;
    var loopOver = 10000;

Test runner

Ready to run.

Testing in
TestOps/sec
while
var counter = 0;
while(counter < countTo)
{
  counter++;
  for( var i = 0; i < loopOver; i++ ){}
}
ready
window.postMessage
// async test
var counter = 0;
window.addEventListener("message", function(event){
  counter++;

  for( var i = 0; i < loopOver; i++ ){}

  if( counter <= countTo ){
    window.postMessage(null, "*");
  }else{
    window.removeEventListener("message", arguments.callee);
    deferred.resolve();
  }
});
window.postMessage(null, "*");
ready
setInterval
// async test
var counter = 0;
var timer = setInterval(function(){
  counter++;

  for( var i = 0; i < loopOver; i++ ){}
  
  if( counter > countTo )
  {
    clearInterval(timer);
    deferred.resolve();
  }
});
ready
setTimeout
// async test
var counter = 0;
setTimeout(function(){
  counter++;

  for( var i = 0; i < loopOver; i++ ){}
  
  if( counter > countTo )
  {
    deferred.resolve();
  }
  else
  {
    setTimeout(arguments.callee, 0);
  }
}, 0);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.

  • Revision 1: published by David Talley on