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

Unified Diff: samples/third_party/dromaeo/tests/dom-traverse-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-traverse-htmlfast.dart
diff --git a/samples/third_party/dromaeo/tests/dom-traverse-htmlfast.dart b/samples/third_party/dromaeo/tests/dom-traverse-htmlfast.dart
new file mode 100644
index 0000000000000000000000000000000000000000..c72e9d574da463b9c1e4a5af041a33c7d9dd792f
--- /dev/null
+++ b/samples/third_party/dromaeo/tests/dom-traverse-htmlfast.dart
@@ -0,0 +1,87 @@
+#library("dom_traverse");
+#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-traverse')
+ .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.appendChild(div);
+ })
+ .test('firstChild', () {
+ final nodes = document.body.nodes;
+ final nl = nodes.length;
+
+ for (int i = 0; i < num; i++) {
+ for (int j = 0; j < nl; j++) {
+ Node cur = nodes[j];
+ while (cur !== null) {
+ cur = cur.$dom_firstChild;
+ }
+ ret = cur;
+ }
+ }
+ })
+ .test('lastChild', () {
+ final nodes = document.body.nodes;
+ final nl = nodes.length;
+
+ for (int i = 0; i < num; i++) {
+ for (int j = 0; j < nl; j++) {
+ Node cur = nodes[j];
+ while (cur !== null) {
+ cur = cur.$dom_lastChild;
+ }
+ ret = cur;
+ }
+ }
+ })
+ .test('nextSibling', () {
+ for (int i = 0; i < num * 2; i++) {
+ Node cur = document.body.$dom_firstChild;
+ while (cur !== null) {
+ cur = cur.nextNode;
+ }
+ ret = cur;
+ }
+ })
+ .test('previousSibling', () {
+ for (int i = 0; i < num * 2; i++) {
+ Node cur = document.body.$dom_lastChild;
+ while (cur !== null) {
+ cur = cur.previousNode;
+ }
+ ret = cur;
+ }
+ })
+ .test('childNodes', () {
+ for (int i = 0; i < num; i++) {
+ final nodes = document.body.nodes;
+ for (int j = 0; j < nodes.length; j++) {
+ ret = nodes[j];
+ }
+ }
+ })
+ .end();
+}

Powered by Google App Engine
This is Rietveld 408576698