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

Unified Diff: samples/third_party/dromaeo/tests/dom-query-htmlfast.dart

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 side-by-side diff with in-line comments
Download patch
Index: samples/third_party/dromaeo/tests/dom-query-htmlfast.dart
diff --git a/samples/third_party/dromaeo/tests/dom-query-htmlfast.dart b/samples/third_party/dromaeo/tests/dom-query-htmlfast.dart
new file mode 100644
index 0000000000000000000000000000000000000000..d6017b74b0cb524eefff7d7dc71f91e69e4944b3
--- /dev/null
+++ b/samples/third_party/dromaeo/tests/dom-query-htmlfast.dart
@@ -0,0 +1,112 @@
+#library("dom_query");
+#import("dart:html");
+#import('../common/common.dart');
+#import('runner.dart');
+
+void main() {
+ final int num = 40;
+
+ // Try to force real results.
+ var ret;
+
+ String html = document.body.innerHTML;
+
+ new Suite(window, 'dom-query')
+ .prep(() {
+ html = BenchUtil.replaceAll(html, 'id="test(\\w).*?"', (Match match) {
+ final group = match.group(1);
+ return 'id="test${group}${num}"';
+ });
+ html = BenchUtil.replaceAll(html, 'name="test.*?"', (Match match) {
+ return 'name="test${num}"';
+ });
+ html = BenchUtil.replaceAll(html, 'class="foo.*?"', (Match match) {
+ return 'class="foo test${num} bar"';
+ });
+ final div = new Element.tag('div');
+ div.innerHTML = html;
+ document.body.$dom_appendChild(div);
+ })
+ .test('getElementById', () {
+ for (int i = 0; i < num * 30; i++) {
+ ret = document.$dom_getElementById('testA$num').hidden;
+ ret = document.$dom_getElementById('testB$num').hidden;
+ ret = document.$dom_getElementById('testC$num').hidden;
+ ret = document.$dom_getElementById('testD$num').hidden;
+ ret = document.$dom_getElementById('testE$num').hidden;
+ ret = document.$dom_getElementById('testF$num').hidden;
+ }
+ })
+ .test('getElementById (not in document)', () {
+ for (int i = 0; i < num * 30; i++) {
+ ret = document.$dom_getElementById('testA');
+ ret = document.$dom_getElementById('testB');
+ ret = document.$dom_getElementById('testC');
+ ret = document.$dom_getElementById('testD');
+ ret = document.$dom_getElementById('testE');
+ ret = document.$dom_getElementById('testF');
+ }
+ })
+ .test('getElementsByTagName(div)', () {
+ for (int i = 0; i < num; i++) {
+ final elems = document.$dom_getElementsByTagName('div');
+ for (int j = 0, len = elems.length; j < len; j++) {
+ ret = elems[j].hidden;
+ }
+ }
+ })
+ .test('getElementsByTagName(p)', () {
+ for (int i = 0; i < num; i++) {
+ final elems = document.$dom_getElementsByTagName('p');
+ for (int j = 0, len = elems.length; j < len; j++) {
+ ret = elems[j].hidden;
+ }
+ }
+ })
+ .test('getElementsByTagName(a)', () {
+ for (int i = 0; i < num; i++) {
+ final elems = document.$dom_getElementsByTagName('a');
+ for (int j = 0, len = elems.length; j < len; j++) {
+ ret = elems[j].hidden;
+ }
+ }
+ })
+ .test('getElementsByTagName(*)', () {
+ for (int i = 0; i < num; i++) {
+ var elems = document.$dom_getElementsByTagName('*');
+ for (int j = 0, len = elems.length; j < len; j++) {
+ ret = elems[j].hidden;
+ }
+ }
+ })
+ .test('getElementsByTagName (not in document)', () {
+ for (int i = 0; i < num; i++) {
+ final elems = document.$dom_getElementsByTagName('strong');
+ for (int j = 0, len = elems.length; j < len; j++) {
+ ret = elems[j].hidden;
+ }
+ }
+ })
+ .test('getElementsByName', () {
+ for (int i = 0; i < num * 20; i++) {
+ var elems = document.$dom_getElementsByName('test$num');
+ ret = elems[elems.length-1].nodeType;
+ elems = document.$dom_getElementsByName('test$num');
+ ret = elems[elems.length-1].nodeType;
+ elems = document.$dom_getElementsByName('test$num');
+ ret = elems[elems.length-1].nodeType;
+ elems = document.$dom_getElementsByName('test$num');
+ ret = elems[elems.length-1].nodeType;
+ }
+ })
+ .test('getElementsByName (not in document)', () {
+ for (int i = 0; i < num * 20; i++) {
+ ret = document.$dom_getElementsByName('test').length == 0;
+ ret = document.$dom_getElementsByName('test').length == 0;
+ ret = document.$dom_getElementsByName('test').length == 0;
+ ret = document.$dom_getElementsByName('test').length == 0;
+ ret = document.$dom_getElementsByName('test').length == 0;
+ }
+ })
+ .end();
+}

Powered by Google App Engine
This is Rietveld 408576698