| OLD | NEW |
| (Empty) | |
| 1 <!DOCTYPE html> |
| 2 |
| 3 <style> |
| 4 section { |
| 5 border: 2px solid red; |
| 6 margin: 16px; |
| 7 padding: 8px; |
| 8 } |
| 9 </style> |
| 10 |
| 11 <script src="dom/bindings/realdomparserbindings.js"></script> |
| 12 <script src="dom/bindings/fakedomparserbindings.js"></script> |
| 13 <script src="dom/domparser.js"></script> |
| 14 |
| 15 <script> |
| 16 var multipler = 1; |
| 17 |
| 18 var output = document.getElementById("output"); |
| 19 |
| 20 var xhr = new XMLHttpRequest(); |
| 21 xhr.open("GET", "wikipedia-markup.txt"); |
| 22 xhr.responseType = "text"; |
| 23 |
| 24 function treeSize(node) { |
| 25 var count = 0; |
| 26 for (var child = node.firstChild; child; child = child.nextSibling) |
| 27 count += 1 + treeSize(child); |
| 28 return count; |
| 29 } |
| 30 |
| 31 function benchmarkParser(name, callback) { |
| 32 document.body.focus(); |
| 33 benchmarkParserInternal(name, callback); |
| 34 document.body.blur(); |
| 35 gc(); gc(); gc(); |
| 36 } |
| 37 |
| 38 function benchmarkParserInternal(name, callback) { |
| 39 var section = document.createElement("section"); |
| 40 var startTime = Date.now(); |
| 41 var timeRecord = callback(); |
| 42 var time = Date.now() - startTime; |
| 43 var output = name + " time: " + time + "ms, createElement: " + timeRecord["c
reateElement"] + "ms, createText: " + timeRecord["createText"] + "ms, appendChil
d: " + timeRecord["appendChild"] + "ms, setAttribute: " + timeRecord["setAttribu
te"] + "ms"; |
| 44 section.appendChild(document.createTextNode(output)); |
| 45 document.body.appendChild(section); |
| 46 } |
| 47 |
| 48 xhr.onload = function() { |
| 49 var markup = ""; |
| 50 for (var i = 0; i < multipler; i++) |
| 51 markup += xhr.responseText; |
| 52 |
| 53 for (var i = 0; i < 10; i++) { |
| 54 benchmarkParser("innerHTML", function() { |
| 55 element = document.createElement("template"); |
| 56 element.innerHTML = markup; |
| 57 return {}; |
| 58 }); |
| 59 } |
| 60 |
| 61 for (var i = 0; i < 10; i++) { |
| 62 benchmarkParser("Real bindings", function() { |
| 63 var parser = new DomParser(markup, RealDomParserBindings); |
| 64 return parser.parse(); |
| 65 }); |
| 66 } |
| 67 }; |
| 68 |
| 69 xhr.onerror = function() { |
| 70 console.log(xhr.status); |
| 71 }; |
| 72 |
| 73 xhr.send(); |
| 74 </script> |
| OLD | NEW |