OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
4 <script src="../resources/runner.js"></script> | 4 <script src="../resources/runner.js"></script> |
5 <style> | 5 <style> |
6 .root .child {} | 6 .root .child {} |
7 </style> | 7 </style> |
8 </head> | 8 </head> |
9 <body> | 9 <body> |
10 <div id="root"></div> | 10 <div id="root"></div> |
11 <script> | 11 <script> |
12 function insertStyleSheet(css) | 12 function insertStyleSheet(css) |
13 { | 13 { |
14 var styleElement = document.createElement("style"); | 14 var styleElement = document.createElement("style"); |
15 styleElement.textContent = css; | 15 styleElement.textContent = css; |
16 document.head.appendChild(styleElement); | 16 document.head.appendChild(styleElement); |
17 return styleElement; | 17 return styleElement; |
18 } | 18 } |
19 | 19 |
20 function cssStr(count) { | 20 function cssStrWithClassSelectors(count) { |
21 var selector = '.a' + count + ' .b' + count + ' { color: red } '; | 21 var selector = '.a' + count + ' .b' + count + ' { color: red } '; |
22 // Intentionally repeat the same classes many times, to test duplicate optim
izations. | 22 // Intentionally repeat the same classes many times, to test duplicate optim
izations. |
23 return selector + selector + selector + selector + selector + selector + sel
ector; | 23 return selector + selector + selector + selector + selector + selector + sel
ector; |
24 } | 24 } |
25 | 25 |
| 26 function cssStrWithAttributeSelectors(count) { |
| 27 var selector = '[attrA' + count + '="1"]' + ' [attrB' + count + '="1"]' + '
{ color: red } '; |
| 28 // Intentionally repeat the same classes many times, to test duplicate optim
izations. |
| 29 return selector + selector + selector + selector + selector + selector + sel
ector; |
| 30 } |
| 31 |
26 function runFunction() | 32 function runFunction() |
27 { | 33 { |
28 var numRules = 1000; | 34 var numRules = 1000; |
29 var arr = new Array(numRules); | 35 var arr = new Array(numRules); |
30 for (var i = 0 ; i < numRules; i++) { | 36 for (var i = 0 ; i < numRules; i++) { |
31 arr[i] = cssStr(i); | 37 arr[i] = cssStrWithClassSelectors(i); |
| 38 } |
| 39 for (var i = 0 ; i < numRules; i++) { |
| 40 arr[numRules + i] = cssStrWithAttributeSelectors(i); |
32 } | 41 } |
33 var styleElement = insertStyleSheet(arr.join(' ')); | 42 var styleElement = insertStyleSheet(arr.join(' ')); |
34 | 43 |
35 // Force style recalc. | 44 // Force style recalc. |
36 document.body.offsetTop; | 45 document.body.offsetTop; |
37 | 46 |
38 styleElement.parentNode.removeChild(styleElement); | 47 styleElement.parentNode.removeChild(styleElement); |
39 } | 48 } |
40 | 49 |
41 PerfTestRunner.measureRunsPerSecond({run: runFunction}); | 50 PerfTestRunner.measureRunsPerSecond({run: runFunction}); |
42 | 51 |
43 </script> | 52 </script> |
44 </body> | 53 </body> |
45 </html> | 54 </html> |
OLD | NEW |