diff --git a/domvm-v2.1.4-keyed/build.js b/domvm-v3.0.1-keyed/build.js similarity index 100% rename from domvm-v2.1.4-keyed/build.js rename to domvm-v3.0.1-keyed/build.js diff --git a/domvm-v2.1.4-keyed/index.html b/domvm-v3.0.1-keyed/index.html similarity index 84% rename from domvm-v2.1.4-keyed/index.html rename to domvm-v3.0.1-keyed/index.html index b767817ca..de4792de6 100644 --- a/domvm-v2.1.4-keyed/index.html +++ b/domvm-v3.0.1-keyed/index.html @@ -2,7 +2,7 @@ - domvm v2.1.4-keyed + domvm v3.0.1-keyed diff --git a/domvm-v2.1.4-keyed/package.json b/domvm-v3.0.1-keyed/package.json similarity index 75% rename from domvm-v2.1.4-keyed/package.json rename to domvm-v3.0.1-keyed/package.json index 10615b493..941eeb69f 100644 --- a/domvm-v2.1.4-keyed/package.json +++ b/domvm-v3.0.1-keyed/package.json @@ -1,6 +1,6 @@ { "name": "js-framework-benchmark-domvm-keyed", - "version": "2.1.4-keyed", + "version": "3.0.1-keyed", "description": "Benchmark for domvm framework (keyed)", "scripts": { "build-dev": "node build.js", @@ -13,6 +13,6 @@ "rollup-plugin-uglify": "*" }, "dependencies": { - "domvm": "git://github.com/leeoniya/domvm.git#eeb3690109fc6515b462bfaef2f81dbcb68a827a" + "domvm": "git://github.com/leeoniya/domvm.git#2eefd1d5bb3cf4aa739f9afd44dfa3df1c690bb3" } } diff --git a/domvm-v2.1.4-keyed/src/main.es6.js b/domvm-v3.0.1-keyed/src/main.es6.js similarity index 55% rename from domvm-v2.1.4-keyed/src/main.es6.js rename to domvm-v3.0.1-keyed/src/main.es6.js index 2b8e1265f..e62f336ec 100644 --- a/domvm-v2.1.4-keyed/src/main.es6.js +++ b/domvm-v3.0.1-keyed/src/main.es6.js @@ -1,29 +1,7 @@ import domvm from '../node_modules/domvm/dist/nano/domvm.nano.min.js'; - import {Store} from './store.es6'; -let startTime; -let lastMeasure; - -function startMeasure(name) { - startTime = performance.now(); - lastMeasure = name; -} - -function stopMeasure() { - var last = lastMeasure; - - if (lastMeasure) { - window.setTimeout(function () { - lastMeasure = null; - var stop = performance.now(); - var duration = 0; - console.log(last+" took "+(stop-startTime)); - }, 0); - } -} - -const h = domvm.defineElement; +const h = (tag, arg1, arg2) => domvm.defineElement(tag, arg1, arg2, domvm.FIXED_BODY); const v = domvm.defineView; const store = new Store(); @@ -41,27 +19,25 @@ function App(vm) { } function Jumbotron(vm) { - vm.diff(_ => [0]); + vm.config({diff: _ => 0}); - let wrapMeasure = name => e => { - startMeasure(name); + let exec = name => e => { store[name](); - vm.root().redraw(true); - stopMeasure(name); + vm.root().redraw(); }; - let run = wrapMeasure("run"); - let runLots = wrapMeasure("runLots"); - let add = wrapMeasure("add"); - let update = wrapMeasure("update"); - let clear = wrapMeasure("clear"); - let swapRows = wrapMeasure("swapRows"); + let run = exec("run"); + let runLots = exec("runLots"); + let add = exec("add"); + let update = exec("update"); + let clear = exec("clear"); + let swapRows = exec("swapRows"); return _ => h(".jumbotron", [ h(".row", [ h(".col-md-6", [ - h("h1", "domvm v2.1.4 (keyed)") + h("h1", "domvm v3.0.1 (keyed)") ]), h(".col-md-6", [ h(".row", [ @@ -91,22 +67,18 @@ function Jumbotron(vm) { function Table(vm) { let select = (e, node) => { - startMeasure("select"); while (node.key == null) node = node.parent; store.select(node.key); - vm.redraw(true); // sync redraw - stopMeasure("select"); + vm.redraw(); return false; }; let remove = (e, node) => { - startMeasure("delete"); while (node.key == null) node = node.parent; store.delete(node.key); - vm.redraw(true); - stopMeasure("delete"); + vm.redraw(); return false; }; @@ -116,28 +88,27 @@ function Table(vm) { ".lbl": select, }; - return _ => - h("table.table.table-hover.table-striped.test-data", {onclick: tableClick}, [ - h("tbody", {_flags: domvm.KEYED_LIST}, store.data.map(item => - v(Item, item, item.id) - )) - ]); -} - -function Item(vm, item) { - vm.diff((vm, item) => [item.label, item.id === store.selected]); - - return _ => - h("tr", {class: item.id === store.selected ? 'danger' : null}, [ - h("td.col-md-1", item.id), - h("td.col-md-4", [ - h("a.lbl", item.label) - ]), - h("td.col-md-1", [ - h("a.remove", [ - h("span.glyphicon.glyphicon-remove", {"aria-hidden": ""}) + return _ => { + var items = domvm.lazyList(store.data, { + key: item => item.id, + diff: item => [item.label, item.id === store.selected], + }); + + return h("table.table.table-hover.table-striped.test-data", {onclick: tableClick}, [ + h("tbody", {_flags: domvm.LAZY_LIST | domvm.KEYED_LIST}, items.map(item => + h("tr", {_key: item.id, class: item.id === store.selected ? 'danger' : null}, [ + h("td.col-md-1", item.id), + h("td.col-md-4", [ + h("a.lbl", item.label) + ]), + h("td.col-md-1", [ + h("a.remove", [ + h("span.glyphicon.glyphicon-remove", {"aria-hidden": ""}) + ]) + ]), + h("td.col-md-6") ]) - ]), - h("td.col-md-6") + )) ]); + }; } \ No newline at end of file diff --git a/domvm-v2.1.4-keyed/src/store.es6.js b/domvm-v3.0.1-keyed/src/store.es6.js similarity index 100% rename from domvm-v2.1.4-keyed/src/store.es6.js rename to domvm-v3.0.1-keyed/src/store.es6.js diff --git a/domvm-v2.1.4-non-keyed/build.js b/domvm-v3.0.1-non-keyed/build.js similarity index 100% rename from domvm-v2.1.4-non-keyed/build.js rename to domvm-v3.0.1-non-keyed/build.js diff --git a/domvm-v2.1.4-non-keyed/index.html b/domvm-v3.0.1-non-keyed/index.html similarity index 82% rename from domvm-v2.1.4-non-keyed/index.html rename to domvm-v3.0.1-non-keyed/index.html index 1e933364f..d2d92409a 100644 --- a/domvm-v2.1.4-non-keyed/index.html +++ b/domvm-v3.0.1-non-keyed/index.html @@ -2,7 +2,7 @@ - domvm v2.1.4-non-keyed + domvm v3.0.1-non-keyed diff --git a/domvm-v2.1.4-non-keyed/package.json b/domvm-v3.0.1-non-keyed/package.json similarity index 64% rename from domvm-v2.1.4-non-keyed/package.json rename to domvm-v3.0.1-non-keyed/package.json index bf7f896ed..15d67e338 100644 --- a/domvm-v2.1.4-non-keyed/package.json +++ b/domvm-v3.0.1-non-keyed/package.json @@ -1,6 +1,6 @@ { - "name": "js-framework-benchmark-domvm-non-keyed", - "version": "2.1.4-non-keyed", + "name": "js-framework-benchmark-domvm-keyed", + "version": "3.0.1-non-keyed", "description": "Benchmark for domvm framework (non-keyed)", "scripts": { "build-dev": "node build.js", @@ -13,6 +13,6 @@ "rollup-plugin-uglify": "*" }, "dependencies": { - "domvm": "git://github.com/leeoniya/domvm.git#eeb3690109fc6515b462bfaef2f81dbcb68a827a" + "domvm": "git://github.com/leeoniya/domvm.git#2eefd1d5bb3cf4aa739f9afd44dfa3df1c690bb3" } } diff --git a/domvm-v2.1.4-non-keyed/src/main.es6.js b/domvm-v3.0.1-non-keyed/src/main.es6.js similarity index 55% rename from domvm-v2.1.4-non-keyed/src/main.es6.js rename to domvm-v3.0.1-non-keyed/src/main.es6.js index 2bbd63fdc..d56513040 100644 --- a/domvm-v2.1.4-non-keyed/src/main.es6.js +++ b/domvm-v3.0.1-non-keyed/src/main.es6.js @@ -1,29 +1,7 @@ import domvm from '../node_modules/domvm/dist/nano/domvm.nano.min.js'; - import {Store} from './store.es6'; -let startTime; -let lastMeasure; - -function startMeasure(name) { - startTime = performance.now(); - lastMeasure = name; -} - -function stopMeasure() { - var last = lastMeasure; - - if (lastMeasure) { - window.setTimeout(function () { - lastMeasure = null; - var stop = performance.now(); - var duration = 0; - console.log(last+" took "+(stop-startTime)); - }, 0); - } -} - -const h = domvm.defineElement; +const h = (tag, arg1, arg2) => domvm.defineElement(tag, arg1, arg2, domvm.FIXED_BODY); const v = domvm.defineView; const store = new Store(); @@ -41,27 +19,25 @@ function App(vm) { } function Jumbotron(vm) { - vm.diff(_ => [0]); + vm.config({diff: _ => 0}); - let wrapMeasure = name => e => { - startMeasure(name); + let exec = name => e => { store[name](); - vm.root().redraw(true); - stopMeasure(name); + vm.root().redraw(); }; - let run = wrapMeasure("run"); - let runLots = wrapMeasure("runLots"); - let add = wrapMeasure("add"); - let update = wrapMeasure("update"); - let clear = wrapMeasure("clear"); - let swapRows = wrapMeasure("swapRows"); + let run = exec("run"); + let runLots = exec("runLots"); + let add = exec("add"); + let update = exec("update"); + let clear = exec("clear"); + let swapRows = exec("swapRows"); return _ => h(".jumbotron", [ h(".row", [ h(".col-md-6", [ - h("h1", "domvm v2.1.4 (non-keyed)") + h("h1", "domvm v3.0.1 (non-keyed)") ]), h(".col-md-6", [ h(".row", [ @@ -91,22 +67,18 @@ function Jumbotron(vm) { function Table(vm) { let select = (e, node) => { - startMeasure("select"); while (node.data == null) node = node.parent; store.select(node.data); - vm.redraw(true); // sync redraw - stopMeasure("select"); + vm.redraw(); return false; }; let remove = (e, node) => { - startMeasure("delete"); while (node.data == null) node = node.parent; store.delete(node.data); - vm.redraw(true); - stopMeasure("delete"); + vm.redraw(); return false; }; @@ -116,28 +88,26 @@ function Table(vm) { ".lbl": select, }; - return _ => - h("table.table.table-hover.table-striped.test-data", {onclick: tableClick}, [ - h("tbody", store.data.map(item => - v(Item, item, false) - )) - ]); -} - -function Item(vm) { - vm.diff((vm, item) => [item.label, item.id, item.id === store.selected]); - - return (vm, item) => - h("tr", {class: item.id === store.selected ? 'danger' : null, _data: item.id}, [ - h("td.col-md-1", item.id), - h("td.col-md-4", [ - h("a.lbl", item.label) - ]), - h("td.col-md-1", [ - h("a.remove", [ - h("span.glyphicon.glyphicon-remove", {"aria-hidden": ""}) + return _ => { + var items = domvm.lazyList(store.data, { + diff: item => [item.label, item.id === store.selected, item.id], + }); + + return h("table.table.table-hover.table-striped.test-data", {onclick: tableClick}, [ + h("tbody", {_flags: domvm.LAZY_LIST}, items.map(item => + h("tr", {_data: item.id, class: item.id === store.selected ? 'danger' : null}, [ + h("td.col-md-1", item.id), + h("td.col-md-4", [ + h("a.lbl", item.label) + ]), + h("td.col-md-1", [ + h("a.remove", [ + h("span.glyphicon.glyphicon-remove", {"aria-hidden": ""}) + ]) + ]), + h("td.col-md-6") ]) - ]), - h("td.col-md-6") + )) ]); + }; } \ No newline at end of file diff --git a/domvm-v2.1.4-non-keyed/src/store.es6.js b/domvm-v3.0.1-non-keyed/src/store.es6.js similarity index 100% rename from domvm-v2.1.4-non-keyed/src/store.es6.js rename to domvm-v3.0.1-non-keyed/src/store.es6.js diff --git a/webdriver-ts/src/common.ts b/webdriver-ts/src/common.ts index 4e442b6cf..ae5f9c42b 100644 --- a/webdriver-ts/src/common.ts +++ b/webdriver-ts/src/common.ts @@ -43,8 +43,8 @@ export let frameworks = [ f("Datum-v0.8.0", true), f("dio-v7.0.1-keyed", false), f("dio-v7.0.1-non-keyed", true), - f("domvm-v2.1.4-non-keyed", true), - f("domvm-v2.1.4-keyed", false), + f("domvm-v3.0.1-non-keyed", true), + f("domvm-v3.0.1-keyed", false), f("ember-v2.13.0", false, {uri: "ember-v2.13.0/dist"}), f("elm-v0.18.0", false), f("glimmer-v0.3.10", false, {uri: "glimmer-v0.3.10/dist"}),