dynamic script tag with src vs xhr + eval vs xhr + inline script tag (v6)

Revision 6 of this benchmark created on


Test runner

Ready to run.

Testing in
TestOps/sec
dynamic script tag with src
// async test
var scriptTag = document.createElement('script');

scriptTag.type = 'text/javascript';
scriptTag.src = "http://cdnjs.cloudflare.com/ajax/libs/Base64/0.1.3/base64.js?" + Date.now();
scriptTag.onload = scriptTag.onreadystatechange = function() {
  deferred.resolve();
};


document.getElementsByTagName('head')[0].appendChild(scriptTag);
ready
xhr+eval
// async test
function reqListener() {
  eval(this.responseText);
  deferred.resolve();
};

var oReq = new XMLHttpRequest();
oReq.onload = reqListener;
oReq.open("get", "http://cdnjs.cloudflare.com/ajax/libs/Base64/0.1.3/base64.js?" + Date.now(), true);
oReq.send();
ready
xhr+inline script tag
// async test
function reqListener() {
  var scriptTag = document.createElement('script');

  scriptTag.type = 'text/javascript';
  scriptTag.text = this.responseText;
  document.getElementsByTagName('head')[0].appendChild(scriptTag);
  deferred.resolve();
};

var oReq = new XMLHttpRequest();
oReq.onload = reqListener;
oReq.open("get", "http://cdnjs.cloudflare.com/ajax/libs/Base64/0.1.3/base64.js?" + Date.now(), true);
oReq.send();
ready
new Function
// async test
function reqListener() {
  (new Function(this.responseText))();
  deferred.resolve();
};

var oReq = new XMLHttpRequest();
oReq.onload = reqListener;
oReq.open("get", "http://cdnjs.cloudflare.com/ajax/libs/Base64/0.1.3/base64.js?" + Date.now(), true);
oReq.send();
ready

Revisions

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