Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(512)

Side by Side Diff: samples/third_party/dromaeo/tests/dom-modify-htmlfast.html

Issue 9732019: dart:html perf optimization based on runing Dromaeo benchmarks (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Respond to code review comments Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 <html> 1 <html>
2 <head> 2 <head>
3 <script src="../htmlrunner.js"></script> 3 <script type="application/dart" src="dom-modify-htmlfast.dart"></script>
4 <script> 4 <script src="http://dart.googlecode.com/svn/branches/bleeding_edge/dart/client/d art.js"></script>
5 window.onload = function(){
6 startTest("dom-query");
7
8 // Try to force real results
9 var ret, tmp;
10 var num = 40;
11 var html = document.body.innerHTML;
12
13 » prep(function(){
14 » » html = html.replace(/id="test(\w).*?"/g, 'id="test$1' + num + '" ');
15 » » html = html.replace(/name="test.*?"/g, 'name="test' + num + '"') ;
16 » » html = html.replace(/class="foo.*?"/g, 'class="foo test' + num + ' bar"');
17 » » var div = document.createElement("div");
18 » » div.innerHTML = html;
19 » » document.body.appendChild( div );
20 » });
21
22 » test( "getElementById", function(){
23 » » for ( var i = 0; i < num * 30; i++ ) {
24 » » » ret = document.getElementById("testA" + num).nodeType;
25 » » » ret = document.getElementById("testB" + num).nodeType;
26 » » » ret = document.getElementById("testC" + num).nodeType;
27 » » » ret = document.getElementById("testD" + num).nodeType;
28 » » » ret = document.getElementById("testE" + num).nodeType;
29 » » » ret = document.getElementById("testF" + num).nodeType;
30 » » }
31 » });
32
33 » test( "getElementById (not in document)", function(){
34 » » for ( var i = 0; i < num * 30; i++ ) {
35 » » » ret = document.getElementById("testA");
36 » » » ret = document.getElementById("testB");
37 » » » ret = document.getElementById("testC");
38 » » » ret = document.getElementById("testD");
39 » » » ret = document.getElementById("testE");
40 » » » ret = document.getElementById("testF");
41 » » }
42 » });
43
44 » test( "getElementsByTagName(div)", function(){
45 » » for ( var i = 0; i < num; i++ ) {
46 » » » var elems = document.getElementsByTagName("div");
47 » » » ret = elems[elems.length-1].nodeType;
48 » » }
49 » });
50
51 » test( "getElementsByTagName(p)", function(){
52 » » for ( var i = 0; i < num; i++ ) {
53 » » » var elems = document.getElementsByTagName("p");
54 » » » ret = elems[elems.length-1].nodeType;
55 » » }
56 » });
57
58 » test( "getElementsByTagName(a)", function(){
59 » » for ( var i = 0; i < num; i++ ) {
60 » » » var elems = document.getElementsByTagName("a");
61 » » » ret = elems[elems.length-1].nodeType;
62 » » }
63 » });
64
65 » test( "getElementsByTagName(*)", function(){
66 » » for ( var i = 0; i < num; i++ ) {
67 » » » var elems = document.getElementsByTagName("*");
68 » » » ret = elems[elems.length-1].nodeType;
69 » » }
70 » });
71
72 » test( "getElementsByTagName (not in document)", function(){
73 » » for ( var i = 0; i < num; i++ ) {
74 » » » var elems = document.getElementsByTagName("strong");
75 » » » ret = elems.length == 0;
76 » » }
77 » });
78
79 » test( "getElementsByName", function(){
80 » » for ( var i = 0; i < num * 20; i++ ) {
81 » » » var elems = document.getElementsByName("test" + num);
82 » » » ret = elems[elems.length-1].nodeType;
83 » » » var elems = document.getElementsByName("test" + num);
84 » » » ret = elems[elems.length-1].nodeType;
85 » » » var elems = document.getElementsByName("test" + num);
86 » » » ret = elems[elems.length-1].nodeType;
87 » » » var elems = document.getElementsByName("test" + num);
88 » » » ret = elems[elems.length-1].nodeType;
89 » » }
90 » });
91
92 » test( "getElementsByName (not in document)", function(){
93 » » for ( var i = 0; i < num * 20; i++ ) {
94 » » » ret = document.getElementsByName("test").length == 0;
95 » » » ret = document.getElementsByName("test").length == 0;
96 » » » ret = document.getElementsByName("test").length == 0;
97 » » » ret = document.getElementsByName("test").length == 0;
98 » » » ret = document.getElementsByName("test").length == 0;
99 » » }
100 » });
101
102 endTest();
103 };
104 </script>
105 </head> 5 </head>
106 <body> 6 <body>
107 <div class="head"> 7 <div class="head">
108 <p><a href="http://www.w3.org/"><img height=48 alt=W3C src="http://www.w3.org /Icons/w3c_home" width=72></a> 8 <p><a href="http://www.w3.org/"><img height=48 alt=W3C src="http://www.w3.org /Icons/w3c_home" width=72></a>
109 9
110 <h1 id="title">Selectors</h1> 10 <h1 id="title">Selectors</h1>
111 11
112 <h2>W3C Working Draft 15 December 2005</h2> 12 <h2>W3C Working Draft 15 December 2005</h2>
113 13
114 <dl> 14 <dl>
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 obsoleted by other documents at any time. It is inappropriate to 141 obsoleted by other documents at any time. It is inappropriate to
242 cite a W3C Working Draft as other than &quot;work in progress&quot;. 142 cite a W3C Working Draft as other than &quot;work in progress&quot;.
243 143
244 <p>This document may be available in <a 144 <p>This document may be available in <a
245 href="http://www.w3.org/Style/css3-selectors-updates/translations">translation </a>. 145 href="http://www.w3.org/Style/css3-selectors-updates/translations">translation </a>.
246 The English version of this specification is the only normative 146 The English version of this specification is the only normative
247 version. 147 version.
248 148
249 <div class="subtoc"> 149 <div class="subtoc">
250 150
251 <h2 id="testF10"><a name=contents>Table of contents</a></h2> 151 <h2 id="test1"><a name=contents>Table of contents</a></h2>
252 152
253 <ul class="toc"> 153 <ul class="toc">
254 <li class="tocline2"><a href="#context">1. Introduction</a> 154 <li class="tocline2"><a href="#context">1. Introduction</a>
255 <ul> 155 <ul>
256 <li><a href="#dependencies">1.1. Dependencies</a> </li> 156 <li><a href="#dependencies">1.1. Dependencies</a> </li>
257 <li><a href="#terminology">1.2. Terminology</a> </li> 157 <li><a href="#terminology">1.2. Terminology</a> </li>
258 <li><a href="#changesFromCSS2">1.3. Changes from CSS2</a> </li> 158 <li><a href="#changesFromCSS2">1.3. Changes from CSS2</a> </li>
259 </ul> 159 </ul>
260 <li class="tocline2"><a href="#selectors">2. Selectors</a> 160 <li class="tocline2"><a href="#selectors">2. Selectors</a>
261 <li class="tocline2"><a href="#casesens">3. Case sensitivity</a> 161 <li class="tocline2"><a href="#casesens">3. Case sensitivity</a>
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 <li class="tocline2"><a href="#downlevel">11. Namespaces and down-level clie nts</a> 232 <li class="tocline2"><a href="#downlevel">11. Namespaces and down-level clie nts</a>
333 <li class="tocline2"><a href="#profiling">12. Profiles</a> 233 <li class="tocline2"><a href="#profiling">12. Profiles</a>
334 <li><a href="#Conformance">13. Conformance and requirements</a> 234 <li><a href="#Conformance">13. Conformance and requirements</a>
335 <li><a href="#Tests">14. Tests</a> 235 <li><a href="#Tests">14. Tests</a>
336 <li><a href="#ACKS">15. Acknowledgements</a> 236 <li><a href="#ACKS">15. Acknowledgements</a>
337 <li class="tocline2"><a href="#references">16. References</a> 237 <li class="tocline2"><a href="#references">16. References</a>
338 </ul> 238 </ul>
339 239
340 </div> 240 </div>
341 241
342 <h2 id="testA10"><a name=context>1. Introduction</a></h2> 242 <h2><a name=context>1. Introduction</a></h2>
343 243
344 <h3><a name=dependencies></a>1.1. Dependencies</h3> 244 <h3><a name=dependencies></a>1.1. Dependencies</h3>
345 245
346 <p>Some features of this specification are specific to CSS, or have 246 <p>Some features of this specification are specific to CSS, or have
347 particular limitations or rules specific to CSS. In this 247 particular limitations or rules specific to CSS. In this
348 specification, these have been described in terms of CSS2.1. <a 248 specification, these have been described in terms of CSS2.1. <a
349 href="#refsCSS21">[CSS21]</a></p> 249 href="#refsCSS21">[CSS21]</a></p>
350 250
351 <h3><a name=terminology></a>1.2. Terminology</h3> 251 <h3><a name=terminology></a>1.2. Terminology</h3>
352 252
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 each specification</li> 287 each specification</li>
388 288
389 <li>Selectors are now a CSS3 Module and an independent 289 <li>Selectors are now a CSS3 Module and an independent
390 specification; other specifications can now refer to this document 290 specification; other specifications can now refer to this document
391 independently of CSS</li> 291 independently of CSS</li>
392 292
393 <li>the specification now has its own test suite</li> 293 <li>the specification now has its own test suite</li>
394 294
395 </ul> 295 </ul>
396 296
397 <h2 id="testB10"><a name=selectors></a>2. Selectors</h2> 297 <h2><a name=selectors></a>2. Selectors</h2>
398 298
399 <p><em>This section is non-normative, as it merely summarizes the 299 <p><em>This section is non-normative, as it merely summarizes the
400 following sections.</em></p> 300 following sections.</em></p>
401 301
402 <p>A Selector represents a structure. This structure can be used as a 302 <p>A Selector represents a structure. This structure can be used as a
403 condition (e.g. in a CSS rule) that determines which elements a 303 condition (e.g. in a CSS rule) that determines which elements a
404 selector matches in the document tree, or as a flat description of the 304 selector matches in the document tree, or as a flat description of the
405 HTML or XML fragment corresponding to that structure.</p> 305 HTML or XML fragment corresponding to that structure.</p>
406 306
407 <p>Selectors may range from simple element names to rich contextual 307 <p>Selectors may range from simple element names to rich contextual
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
701 <td class="pattern">E ~ F</td> 601 <td class="pattern">E ~ F</td>
702 <td class="meaning">an F element preceded by an E element</td> 602 <td class="meaning">an F element preceded by an E element</td>
703 <td class="described"><a 603 <td class="described"><a
704 href="#general-sibling-combinators">General sibling combinator</a></td> 604 href="#general-sibling-combinators">General sibling combinator</a></td>
705 <td class="origin">3</td></tr></tbody></table> 605 <td class="origin">3</td></tr></tbody></table>
706 606
707 <p>The meaning of each selector is derived from the table above by 607 <p>The meaning of each selector is derived from the table above by
708 prepending "matches" to the contents of each cell in the "Meaning" 608 prepending "matches" to the contents of each cell in the "Meaning"
709 column.</p> 609 column.</p>
710 610
711 <h2 id="testC10"><a name=casesens>3. Case sensitivity</a></h2> 611 <h2><a name=casesens>3. Case sensitivity</a></h2>
712 612
713 <p>The case sensitivity of document language element names, attribute 613 <p>The case sensitivity of document language element names, attribute
714 names, and attribute values in selectors depends on the document 614 names, and attribute values in selectors depends on the document
715 language. For example, in HTML, element names are case-insensitive, 615 language. For example, in HTML, element names are case-insensitive,
716 but in XML, they are case-sensitive.</p> 616 but in XML, they are case-sensitive.</p>
717 617
718 <h2 id="testD10"><a name=selector-syntax>4. Selector syntax</a></h2> 618 <h2><a name=selector-syntax>4. Selector syntax</a></h2>
719 619
720 <p>A <dfn><a name=selector>selector</a></dfn> is a chain of one 620 <p>A <dfn><a name=selector>selector</a></dfn> is a chain of one
721 or more <a href="#sequence">sequences of simple selectors</a> 621 or more <a href="#sequence">sequences of simple selectors</a>
722 separated by <a href="#combinators">combinators</a>.</p> 622 separated by <a href="#combinators">combinators</a>.</p>
723 623
724 <p>A <dfn><a name=sequence>sequence of simple selectors</a></dfn> 624 <p>A <dfn><a name=sequence>sequence of simple selectors</a></dfn>
725 is a chain of <a href="#simple-selectors-dfn">simple selectors</a> 625 is a chain of <a href="#simple-selectors-dfn">simple selectors</a>
726 that are not separated by a <a href="#combinators">combinator</a>. It 626 that are not separated by a <a href="#combinators">combinator</a>. It
727 always begins with a <a href="#type-selectors">type selector</a> or a 627 always begins with a <a href="#type-selectors">type selector</a> or a
728 <a href="#universal-selector">universal selector</a>. No other type 628 <a href="#universal-selector">universal selector</a>. No other type
(...skipping 27 matching lines...) Expand all
756 represents any element satisfying its requirements. Prepending another 656 represents any element satisfying its requirements. Prepending another
757 sequence of simple selectors and a combinator to a sequence imposes 657 sequence of simple selectors and a combinator to a sequence imposes
758 additional matching constraints, so the subjects of a selector are 658 additional matching constraints, so the subjects of a selector are
759 always a subset of the elements represented by the last sequence of 659 always a subset of the elements represented by the last sequence of
760 simple selectors.</p> 660 simple selectors.</p>
761 661
762 <p>An empty selector, containing no sequence of simple selectors and 662 <p>An empty selector, containing no sequence of simple selectors and
763 no pseudo-element, is an <a href="#Conformance">invalid 663 no pseudo-element, is an <a href="#Conformance">invalid
764 selector</a>.</p> 664 selector</a>.</p>
765 665
766 <h2 id="testE10"><a name=grouping>5. Groups of selectors</a></h2> 666 <h2><a name=grouping>5. Groups of selectors</a></h2>
767 667
768 <p>When several selectors share the same declarations, they may be 668 <p>When several selectors share the same declarations, they may be
769 grouped into a comma-separated list. (A comma is U+002C.)</p> 669 grouped into a comma-separated list. (A comma is U+002C.)</p>
770 670
771 <div class="example"> 671 <div class="example">
772 <p>CSS examples:</p> 672 <p>CSS examples:</p>
773 <p>In this example, we condense three rules with identical 673 <p>In this example, we condense three rules with identical
774 declarations into one. Thus,</p> 674 declarations into one. Thus,</p>
775 <pre>h1 { font-family: sans-serif } 675 <pre>h1 { font-family: sans-serif }
776 h2 { font-family: sans-serif } 676 h2 { font-family: sans-serif }
(...skipping 2065 matching lines...) Expand 10 before | Expand all | Expand 10 after
2842 2742
2843 <p>namespaces</td></tr> 2743 <p>namespaces</td></tr>
2844 <tr> 2744 <tr>
2845 <th>Excludes</th> 2745 <th>Excludes</th>
2846 <td>non-accepted pseudo-classes<br>pseudo-elements<br></td></tr> 2746 <td>non-accepted pseudo-classes<br>pseudo-elements<br></td></tr>
2847 <tr> 2747 <tr>
2848 <th>Extra constraints</th> 2748 <th>Extra constraints</th>
2849 <td>some selectors and combinators are not allowed in fragment 2749 <td>some selectors and combinators are not allowed in fragment
2850 descriptions on the right side of STTS declarations.</td></tr></tbody></ta ble> 2750 descriptions on the right side of STTS declarations.</td></tr></tbody></ta ble>
2851 <form> 2751 <form>
2852 <input type="text" name="test10"/> 2752 <input type="text" name="test1"/>
2853 <input type="text" name="foo"/> 2753 <input type="text" name="foo"/>
2854 <input type="text" name="foo"/> 2754 <input type="text" name="foo"/>
2855 <input type="text" name="foo"/> 2755 <input type="text" name="foo"/>
2856 <input type="text" name="foo"/> 2756 <input type="text" name="foo"/>
2857 <input type="text" name="foo"/> 2757 <input type="text" name="foo"/>
2858 <input type="text" name="foo"/> 2758 <input type="text" name="foo"/>
2859 <input type="text" name="foo"/> 2759 <input type="text" name="foo"/>
2860 <input type="text" name="foo"/> 2760 <input type="text" name="foo"/>
2861 <input type="text" name="foo"/> 2761 <input type="text" name="foo"/>
2862 <input type="text" name="foo"/> 2762 <input type="text" name="foo"/>
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
2902 which is not allowed at the current parsing point. 2802 which is not allowed at the current parsing point.
2903 2803
2904 <p>User agents must observe the rules for handling parsing errors: 2804 <p>User agents must observe the rules for handling parsing errors:
2905 <ul> 2805 <ul>
2906 <li>a simple selector containing an undeclared namespace prefix is invalid</li > 2806 <li>a simple selector containing an undeclared namespace prefix is invalid</li >
2907 <li>a selector containing an invalid simple selector, an invalid combinator 2807 <li>a selector containing an invalid simple selector, an invalid combinator
2908 or an invalid token is invalid. </li> 2808 or an invalid token is invalid. </li>
2909 <li>a group of selectors containing an invalid selector is invalid.</li> 2809 <li>a group of selectors containing an invalid selector is invalid.</li>
2910 </ul> 2810 </ul>
2911 2811
2912 <p class="foo test10 bar">Specifications reusing Selectors must define how to ha ndle parsing 2812 <p class="foo test1 bar">Specifications reusing Selectors must define how to han dle parsing
2913 errors. (In the case of CSS, the entire rule in which the selector is 2813 errors. (In the case of CSS, the entire rule in which the selector is
2914 used is dropped.)</p> 2814 used is dropped.)</p>
2915 2815
2916 <!-- Apparently all these references are out of date: 2816 <!-- Apparently all these references are out of date:
2917 <p>Implementations of this specification must behave as 2817 <p>Implementations of this specification must behave as
2918 "recipients of text data" as defined by <a href="#refsCWWW">[CWWW]</a> 2818 "recipients of text data" as defined by <a href="#refsCWWW">[CWWW]</a>
2919 when parsing selectors and attempting matches. (In particular, 2819 when parsing selectors and attempting matches. (In particular,
2920 implementations must assume the data is normalized and must not 2820 implementations must assume the data is normalized and must not
2921 normalize it.) Normative rules for matching strings are defined in 2821 normalize it.) Normative rules for matching strings are defined in
2922 <a href="#refsCWWW">[CWWW]</a> and <a 2822 <a href="#refsCWWW">[CWWW]</a> and <a
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
2991 <dt>[XMLNAMES] 2891 <dt>[XMLNAMES]
2992 <dd><a name="refsXMLNAMES"></a> Tim Bray, Dave Hollander, Andrew Layman, edito rs; "<cite>Namespaces in XML</cite>", W3C Recommendation, 14 January 1999 2892 <dd><a name="refsXMLNAMES"></a> Tim Bray, Dave Hollander, Andrew Layman, edito rs; "<cite>Namespaces in XML</cite>", W3C Recommendation, 14 January 1999
2993 <dd>(<a href="http://www.w3.org/TR/REC-xml-names/"><code>http://www.w3.org/TR/ REC-xml-names/</code></a>) 2893 <dd>(<a href="http://www.w3.org/TR/REC-xml-names/"><code>http://www.w3.org/TR/ REC-xml-names/</code></a>)
2994 2894
2995 <dt>[YACC] 2895 <dt>[YACC]
2996 <dd><a name="refsYACC"></a> S. C. Johnson; "<cite>YACC &mdash; Yet another com piler compiler</cite>", Technical Report, Murray Hill, 1975 2896 <dd><a name="refsYACC"></a> S. C. Johnson; "<cite>YACC &mdash; Yet another com piler compiler</cite>", Technical Report, Murray Hill, 1975
2997 2897
2998 </dl> 2898 </dl>
2999 </body> 2899 </body>
3000 </html> 2900 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698