Test case details

Preparation Code

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <div id="root"></div> <script>  // fallback for older browsers  if (!Array.prototype.indexOf) {   Array.prototype.indexOf = function(item) {    var len = this.length >>> 0;    for (var i = 0; i < len; i++) {     if (this[i] === item) {      return i;     }    }    return -1;   };  }    // array version  var data = (function() {   var elements = [];   var storage = [];   return function(el, key, value) {    var i = elements.indexOf(el);    if (typeof value != "undefined") {     if (i == -1) {      i = elements.length;      elements[i] = el;      storage[i] = {};     }     storage[i][key] = value; // set    } else if (storage[i]) {     return storage[i][key]; // get    }   };  })();    // hash table version  var data2 = (function() {   var storage = {};   var counter = 1;   return function(el, key, value) {    var uid = el.uniqueID || (el.uniqueID = counter++);    if (typeof value != "undefined") {     storage[uid] || (storage[uid] = {});     storage[uid][key] = value; // set    } else if (storage[uid]) {     return storage[uid][key]; // get    }   };  })();    ////////////////////////////////////  // Create test page  var MAXDEPTH = 2;  var dummy = document.createElement("div");  var total = 0;    function createBranch(root, depth) {   depth = depth ? depth + 1 : 1;   for (var i = 0; i < 10; i++) {    total++;    var el = dummy.cloneNode(false);    el.id = "elem" + total;    root.appendChild(el);    if (depth < MAXDEPTH) {     createBranch(el, depth);    }   }  }    ////////////////////////////////////  // Initialize tests      var root = document.getElementById("root");  createBranch(root);  var elems = root.getElementsByTagName("div");  var len = elems.length;  var ret; </script>

Test cases

Test #1

for (var i = len; i--;) {  jQuery.data(elems[i], "custom" + i, "custom" + i);  ret = jQuery.data(elems[i], "custom" + i); }

Test #2

for (var i = len; i--;) {  data(elems[i], "custom" + i, "custom" + i);  ret = data(elems[i], "custom" + i); }

Test #3

for (var i = len; i--;) {  data2(elems[i], "custom" + i, "custom" + i);  ret = data2(elems[i], "custom" + i); }