cloneNode vs createElement Performance

JavaScript performance comparison

Revision 83 of this test case created by Michael Rawlings

Preparation code

<script>
  var img = document.createElement("img");
  img.src = "http://www.google.com/intl/en_com/images/srpr/logo2w.png";
  
  var div = document.createElement("div");
  div.className = "myclass1 myclass2";
  
  var input = document.createElement("input");
  input.type = "checkbox";
  input.className = "myinputclass";

  var div_nested = document.createElement("div");
  var child = document.createElement("span");
  var text = document.createTextNode("Hello ");
  var text2 = document.createTextNode("");
  child.appendChild(text);
  child.appendChild(text2);
  div_nested.appendChild(child);

  var dynamicIndexes = { 3:true };
</script>
    

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in CCBot 2.0.0 / Other 0.0.0
Test Ops/sec
create div
var div = document.createElement("div");
div.className = "myclass1 myclass2";
pending…
clone nested + walk
var nestedClone = div_nested.cloneNode(true);
var walker = document.createTreeWalker(nestedClone);
var i = 0;
var dynamic = [];
do {
  if (dynamicIndexes[i++]) {
    dynamic.push(walker.currentNode);
  }
} while (walker.nextNode());
pending…
create input
var input = document.createElement("input");
input.type = "checkbox";
input.className = "myinputclass";
pending…
create nested
var div_nested = document.createElement("div");
  var child = document.createElement("span");
  var text = document.createTextNode("Hello ");
  var text2 = document.createTextNode("");
  child.appendChild(text);
  child.appendChild(text2);
  div_nested.appendChild(child);
pending…
clone div
var divClone = div.cloneNode(false);
pending…
clone image
var imgClone = img.cloneNode(false);
pending…
create nested + array
var div_nested = document.createElement("div");
  var child = document.createElement("span");
  var text = document.createTextNode("Hello ");
  var text2 = document.createTextNode("");
  child.appendChild(text);
  child.appendChild(text2);
  div_nested.appendChild(child);

var dynamic = [text2];
pending…
clone input
var inputClone = input.cloneNode(false);
pending…
create image
var img = document.createElement("img");
img.className = "myinputclass";
img.src = "http://www.google.com/intl/en_com/images/srpr/logo2w.png";
pending…
clone nested
var nestedClone = div_nested.cloneNode(true);
pending…

Compare results of other browsers

Revisions

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

0 Comments