| <!DOCTYPE html> | |
| <body> | |
| <pre id="log"></pre> | |
| <script src="../resources/runner.js"></script> | |
| <div id="sandbox" style="display:none"></div> | |
| <script> | |
| var sandbox = document.getElementById('sandbox'); | |
| var observing = false; | |
| for (var i = 0; i < 1000; ++i) | |
| sandbox.appendChild(document.createElement('div')); | |
| var html = sandbox.innerHTML; | |
| var observer = new WebKitMutationObserver(listener); | |
| var tickledSpan = document.createElement('span'); | |
| observer.observe(tickledSpan, {attributes: true}); | |
| function resetState() { | |
| window.start = null; | |
| window.numRuns = 25; | |
| window.times = []; | |
| } | |
| function runAgain() { | |
| tickledSpan.setAttribute('data-foo', numRuns); | |
| } | |
| function listener(mutations) { | |
| if (start) { | |
| var time = Date.now() - start; | |
| times.push(time); | |
| PerfTestRunner.log(time); | |
| } | |
| if (numRuns-- >= 0) { | |
| runAgain(); | |
| start = Date.now(); | |
| for (var i = 0; i < 100; ++i) | |
| sandbox.innerHTML = html; | |
| } else { | |
| PerfTestRunner.logStatistics(times); | |
| if (!observing) { | |
| observer.observe(sandbox, {childList: true}); | |
| observing = true; | |
| resetState(); | |
| PerfTestRunner.log('\n------------\n'); | |
| PerfTestRunner.log('Running ' + numRuns + ' times with observation'); | |
| setTimeout(runAgain, 0); | |
| } | |
| } | |
| } | |
| resetState(); | |
| PerfTestRunner.log('Running ' + numRuns + ' times without observation'); | |
| window.addEventListener('load', runAgain); | |
| </script> | |
| </body> |