+++ /dev/null
-<!DOCTYPE html>
-<body>
-<script src="../resources/runner.js"></script>
-<script>
-
-var getterRepeat = 1500000;
-var setterRepeat = 250000;
-
-var times = {};
-
-PerfTestRunner.run(function() {
- var tests = [{name: 'HTMLElement.id',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.id;
- }
- },
- {name: 'HTMLElement.title',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.title;
- }
- },
- {name: 'HTMLElement.lang',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.lang;
- }
- },
- {name: 'HTMLElement.dir',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.dir;
- }
- },
- {name: 'HTMLElement.className',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.className;
- }
- },
- {name: 'HTMLElement.classList',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.classList;
- }
- },
- {name: 'HTMLElement.tabIndex',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.tabIndex;
- }
- },
- {name: 'HTMLElement.draggable',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.draggable;
- }
- },
- {name: 'HTMLElement.webkitdropzone',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.webkitdropzone;
- }
- },
- {name: 'HTMLElement.hidden',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.hidden;
- }
- },
- {name: 'HTMLElement.accessKey',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.accessKey;
- }
- },
- {name: 'HTMLElement.children',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.children;
- }
- },
- {name: 'HTMLElement.isContentEditable',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.isContentEditable;
- }
- },
- {name: 'HTMLElement.spellcheck',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.spellcheck;
- }
- },
- {name: 'HTMLElement.innerHTML',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.innerHTML;
- }
- },
- {name: 'HTMLElement.innerText',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.innerText;
- }
- },
- {name: 'HTMLElement.outerHTML',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.outerHTML;
- }
- },
- {name: 'HTMLElement.outerText',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.outerText;
- }
- },
- {name: 'HTMLElement.contentEditable',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.contentEditable;
- }
- },
- {name: 'HTMLElement.id="foo"',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < setterRepeat; i++)
- div.id = "foo";
- }
- },
- {name: 'HTMLElement.title="foo"',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < setterRepeat; i++)
- div.title = "foo";
- }
- },
- {name: 'HTMLElement.lang="foo"',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < setterRepeat; i++)
- div.lang = "foo";
- }
- },
- {name: 'HTMLElement.dir="foo"',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < setterRepeat; i++)
- div.dir = "foo";
- }
- },
- {name: 'HTMLElement.className="foo"',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < setterRepeat; i++)
- div.className = "foo";
- }
- },
- {name: 'HTMLElement.tabIndex="foo"',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < setterRepeat; i++)
- div.tabIndex = "foo";
- }
- },
- {name: 'HTMLElement.draggable="foo"',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < setterRepeat; i++)
- div.draggable = "foo";
- }
- },
- {name: 'HTMLElement.webkitdropzone="foo"',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < setterRepeat; i++)
- div.webkitdropzone = "foo";
- }
- },
- {name: 'HTMLElement.hidden="foo"',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < setterRepeat; i++)
- div.hidden = "foo";
- }
- },
- {name: 'HTMLElement.accessKey="foo"',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < setterRepeat; i++)
- div.accessKey = "foo";
- }
- },
- {name: 'HTMLElement.spellcheck="foo"',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < setterRepeat; i++)
- div.spellcheck = "foo";
- }
- },
- {name: 'HTMLElement.innerHTML="foo"',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < setterRepeat; i++)
- div.innerHTML = "foo";
- }
- },
- {name: 'HTMLElement.innerText="foo"',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < setterRepeat; i++)
- div.innerText = "foo";
- }
- },
- {name: 'Element.tagName',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.tagName;
- }
- },
- {name: 'Element.style',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.style;
- }
- },
- {name: 'Element.offsetLeft',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.offsetLeft;
- }
- },
- {name: 'Element.clientLeft',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.clientLeft;
- }
- },
- {name: 'Element.scrollLeft',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.scrollLeft;
- }
- },
- {name: 'Element.dataset',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.dataset;
- }
- },
- {name: 'Element.firstElementChild',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.firstElementChild;
- }
- },
- {name: 'Element.lastElementChild',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.lastElementChild;
- }
- },
- {name: 'Element.previousElementSibling',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.previousElementSibling;
- }
- },
- {name: 'Element.nextElementSibling',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.nextElementSibling;
- }
- },
- {name: 'Element.childElementCount',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.childElementCount;
- }
- },
- {name: 'Element.onload',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.onload;
- }
- },
- {name: 'Element.scrollLeft="foo"',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < setterRepeat; i++)
- div.scrollLeft = "foo";
- }
- },
- {name: 'Element.onload="foo"',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < setterRepeat; i++)
- div.onload = "foo";
- }
- },
- {name: 'Node.nodeName',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.nodeName;
- }
- },
- {name: 'Node.nodeType',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.nodeType;
- }
- },
- {name: 'Node.parentNode',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.parentNode;
- }
- },
- {name: 'Node.childNodes',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.childNodes;
- }
- },
- {name: 'Node.firstChild',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.firstChild;
- }
- },
- {name: 'Node.lastChild',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.lastChild;
- }
- },
- {name: 'Node.previousSibling',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.previousSibling;
- }
- },
- {name: 'Node.nextSibling',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.nextSibling;
- }
- },
- {name: 'Node.attributes',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.attributes;
- }
- },
- {name: 'Node.ownerDocument',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.ownerDocument;
- }
- },
- {name: 'Node.namespaceURI',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.namespaceURI;
- }
- },
- {name: 'Node.localName',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.localName;
- }
- },
- {name: 'Node.baseURI',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.baseURI;
- }
- },
- {name: 'Node.parentElement',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.parentElement;
- }
- },
- {name: 'Node.nodeValue',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.nodeValue;
- }
- },
- {name: 'Node.prefix',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.prefix;
- }
- },
- {name: 'Node.textContent',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < getterRepeat; i++)
- div.textContent;
- }
- },
- {name: 'Node.nodeValue="foo"',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < setterRepeat; i++)
- div.nodeValue = "foo";
- }
- },
- {name: 'Node.prefix="foo"',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < setterRepeat; i++)
- div.prefix = "foo";
- }
- },
- {name: 'Node.textContent="foo"',
- func: function() {
- var div = document.createElement("div");
- for (var i = 0; i < setterRepeat; i++)
- div.textContent = "foo";
- }
- },
- ];
- runTests(tests);
-}, 1, 5, onCompleted);
-
-function runTests(tests) {
- for (var i = 0; i < tests.length; i++) {
- var start = Date.now();
- (tests[i].func)();
- if (times[tests[i].name] === undefined)
- times[tests[i].name] = [];
- times[tests[i].name].push(Date.now() - start);
- }
-}
-
-function onCompleted() {
- for (var name in times) {
- var statistics = PerfTestRunner.computeStatistics(times[name]);
- PerfTestRunner.info("[" + name + "] avg=" + statistics.mean.toFixed(2) + "ms, median=" + statistics.median.toFixed(2) + "ms, stdev=" + statistics.stdev.toFixed(2) + "ms, min=" + statistics.min + ", max=" + statistics.max);
- }
-}
-</script>
-</body>
-</html>