Skip to content

Commit

Permalink
Rework with typescript (#19)
Browse files Browse the repository at this point in the history
* feat(lib): add typescript refactored version

Add typescript refactored version and benchmark tests

* Added lite better version

* perf(lib): add better typescript version

Implemented typescript version that improves performance by 10%-15%.

* Update source.js

* Update

* Update

* Updated

* Updated

* Updated

* Updated

* Update node.js

* Build

* Final implementation

* Upgrade dependencies

* Change utf-8 to utf8 which Node uses
  • Loading branch information
Masquerade-Circus committed Apr 29, 2021
1 parent 5caa9a6 commit f8ec286
Show file tree
Hide file tree
Showing 30 changed files with 3,379 additions and 3,806 deletions.
2 changes: 1 addition & 1 deletion .dccache
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[{"/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/register.js":"1","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/rollupSource.js":"2","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/dist/valyrian.min.js":"3","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/lib/index.js":"4","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/hooks.js":"5","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/node.js":"6","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/node.sw.tpl.js":"7","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/request.js":"8","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/router.js":"9","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/signals.js":"10","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/store.js":"11","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/sw.js":"12","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/v-model.js":"13","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/directives_test.js":"14","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/hooks_test.js":"15","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/hyperscript_test.js":"16","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/keyed_test.js":"17","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/lifecycle_test.js":"18","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/mount_n_update_test.js":"19","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/node_test.js":"20","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/request_test.js":"21","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/router_test.js":"22","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/signals_test.js":"23","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/store_test.js":"24","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/utils/tree-adapter.js":"25"},[688,1607308222699.7341,"26"],[2068,1607120291416.5527,"27"],[4951,1607309093507.3,"28"],[13063,1607120673640.9028,"29"],[2801,1601561147084.002,"30"],[9901,1607401764856.6829,"31"],[4083,1601561152283.9846,"32"],[4175,1601711784571.025,"33"],[6630,1607402317220.4155,"34"],[4083,1601561161489.3032,"35"],[2041,1601561163851.908,"36"],[448,1601561166242.2478,"37"],[3182,1601561182841.262,"38"],[14551,1607240550740.148,"39"],[5491,1601561187310.7358,"40"],[2790,1602046213316.2332,"41"],[2477,1601561192499.9382,"42"],[3853,1601561256934.404,"43"],[8396,1602046229772.1895,"44"],[6623,1607119389329.592,"45"],[8776,1601711047778.4246,"46"],[9724,1607402067407.951,"47"],[5720,1601561591586.4749,"48"],[4426,1601561595435.788,"49"],[14845,1602043898530.3389,"50"],"31bff5a8431e32a68275fe4e83ed7607a6132a9db824f5fc2aadc622a5934e4b","0ec7df7c9a6bab0fd6d04c253af13a09b487cba19889d7dc7a0df382f5535f00","05f8fbc05e9e2c371f3feac40047010a62d3dcea864437667f9bdf160887c39d","5c0ea99ac4af5513b9144084d68f4626bf5927f1b4e184368cf10edcab0a44f6","16b6f25485c43e37c210e4bef87353a9a9c0e639c9509770dc63ab49dec3525a","97443117b52b9716e65a8c96a5ebfe6eb65aa7d17c9100ae162ffefc2338f7c2","9e41c42d425160d207ad8dbe2eddd6c2bf432338665826d07c897e0f2b44a14d","0f4356afca5c145d5a323cd651da7354a490286b68bdd63078750f936d7e0483","7908598f1046f367c3ce6c02bf9b44970e333b35c449b43363f96dceb1008958","8d1fe0d59ee427d044a50a05fef348508a6e3c0470fe1fc027b1414ca488edb9","a950855c17dfc2667d895f978f7374e977e2631344198066f5972e92d0994289","74dd7dfefb006f754a7c5b13d8086b36990b440c16ce5b60b2b661188ac91c6c","ba3588cbe7fe65446cbdc8b9ffed65283c602fef940cb68d5fba025bb1aaad58","7125bc46c5881021937ed7df34b8b4b047443bdc7a621cd8203827240085ca40","ef5804184ff8456f5e366df6bfff69f5a3afee68423593338e4800c79816c9c0","f5ee42c239f8b6306df002d52bd928c5b521db32b0616e5e676e69c34ae80b7c","3e9635114cde575b7d4b68c636752d3919eefa460998dc33f0590d88c9090020","4a1e952b9225b20ac59c16d15fb586602804ff03e05813c1399c206097609c03","dccc69630bab05c149376b89b581dabd10ebfd2015d0b65a8a4ed413b0cf14c5","dacb264f5d142800de5510deeceba1665ac70bfffe32b896427ed5dc5bff9087","5cac321ab5cf8f969d3629db4b4df564485a456fcca0c4a509ce12bb681a798e","c97026af0426d19cd7153178c3373cdf90fe0f12f5c9a1c70ccf1cacfed3ae5e","b6c8e80c37efde1a28cb7681d7d9b31d6cb10ad25d74691e84b87237b347497b","020812b85ad71a026e6b73f6e7fb0601518d903093e2484605d0271666622efa","9c0dd2ed2e6b14a644c8a2c1b28761b16f7253b182307a3f1b9fb529088b602c"]
[{"/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/register.js":"1","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/source.js":"2","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/dist/valyrian.lite.js":"3","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/dist/valyrian.min.js":"4","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/lib/index-old.js":"5","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/lib/index.ts":"6","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/hooks.js":"7","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/node.js":"8","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/node.sw.tpl.js":"9","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/request.js":"10","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/router.js":"11","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/signals.js":"12","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/store.js":"13","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/sw.js":"14","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/v-model.js":"15","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/bench/hyperscript.test.js":"16","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/bench/iterations.test.js":"17","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/bench/mount_n_update.test.js":"18","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/directives_test.js":"19","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/hooks_test.js":"20","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/hyperscript_test.js":"21","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/keyed_test.js":"22","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/lifecycle_test.js":"23","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/mount_n_update_test.js":"24","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/node_test.js":"25","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/request_test.js":"26","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/router_test.js":"27","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/signals_test.js":"28","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/store_test.js":"29","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/utils/tree-adapter.js":"30"},[688,1617422138186.5078,"31"],[306,1616825108555.1147,"32"],[5511,1616825095291.283,"33"],[5601,1619653418514.3186,"34"],[14148,1614725354934.1553,"35"],[19967,1619650803442.944,"36"],[2711,1614312312585.8137,"37"],[9953,1617415452958.3203,"38"],[4083,1601561152283.9846,"39"],[4221,1614252184732.3354,"40"],[6630,1607402317220.4155,"41"],[4083,1601561161489.3032,"42"],[2041,1601561163851.908,"43"],[448,1601561166242.2478,"44"],[3182,1601561182841.262,"45"],[1482,1619652328838.7742,"46"],[2559,1614986276132.9998,"47"],[8221,1619653192165.162,"48"],[14550,1619651208081.9885,"49"],[5492,1616826188153.037,"50"],[2791,1616826188096.7952,"51"],[2478,1616826186628.4065,"52"],[3854,1616826186616.3247,"53"],[8671,1619650888412.6794,"54"],[7378,1619654368076.149,"55"],[8772,1616826187324.6958,"56"],[9996,1616826187980.2695,"57"],[5703,1616826186628.4065,"58"],[4355,1616826187195.9941,"59"],[14845,1602043898530.3389,"60"],"31bff5a8431e32a68275fe4e83ed7607a6132a9db824f5fc2aadc622a5934e4b","19413710bd8e336b582a291813142fc3093fc0adb44b1aacb9bac9bf51d7a1ce","d4df20560495961b3ab9405dbd162e5846b2d3e66a94f307bf08ae51ed89625c","886788eaf65d7bf40a15ae748362df60669d257f30447af25a83c78aa76b8e9f","6aa7b21dc8aa28b129933eadeff2632a4b52d5e9d977660a3767bf3ae2cc5aa5","8920f4da5a696c9aa33e5af02971a375b843e87cd77f3070ddd428871b3b7e5f","2f9c50259a30ee02d28e21cba4bae4e844a118092e1c48239181dfe5e27647f6","8ab4366c6ebe9bd33572aa16e928c708609fec868c486ec3eddfc89bc0f77ea8","9e41c42d425160d207ad8dbe2eddd6c2bf432338665826d07c897e0f2b44a14d","2e2986dbf0786e8d84ef7ffa3eb34e891d636c82ace995a45fd29944429c60b8","7908598f1046f367c3ce6c02bf9b44970e333b35c449b43363f96dceb1008958","8d1fe0d59ee427d044a50a05fef348508a6e3c0470fe1fc027b1414ca488edb9","a950855c17dfc2667d895f978f7374e977e2631344198066f5972e92d0994289","74dd7dfefb006f754a7c5b13d8086b36990b440c16ce5b60b2b661188ac91c6c","ba3588cbe7fe65446cbdc8b9ffed65283c602fef940cb68d5fba025bb1aaad58","7b843fdc12dc95e3285059a9552a340a776e8134e50f79c5f2239fee5a356b66","3fe7303903dc5d4031d325600e7d5f6b44ebe1835805af8f1c3b17481f6e1b93","426f0fa1900c9abd9d90e28cebe0cd2d5ac49176a7e376aec5b278d81fbb9a30","4509d29952f10c5c50a38c11315cfd70b6bbeb384663d259c11e9908755e8a77","d29af28903e17822e2124745feba6bd75c795abdb59b8b1768f79d10f4e2cfdb","40995000796dfc72a75a56f6c8a91a82bf7e69a58a3b9ac87a995ba90f05f5d0","682192795f6b060c66a1be5f61a7f9e1e9df373cf8cfed97face6d61ceeb13cc","ab3b54754e1dd3c4e3d4c07dfe45082705fffd50de4c09e50fae42383819586f","74a22512172724fbcd202b243b458b17c2b80788c400cfd03c788356b545a7c8","95b5d786979d8b6fe27c40e3a91a8bc2eb62aecc8519ccb679adc64170f2d898","41ebedb1c6159aa84df02d07c4e86fbed45dd005e6c1d5cb83204cf61080e10c","3f8a5325d2a53f10b134a0d201a43c0a73d01b5b9eb4f95cb8a13ee0958d8bad","cf8d15f6c280171af4626c7b7031435598c1b1db0eeb5ae6ce7f0988d1eb3936","24b75a991dd9d43aaf12333fc3b5080631ec8e5e68e0ccca7bb01b41b4bf81b6","9c0dd2ed2e6b14a644c8a2c1b28761b16f7253b182307a3f1b9fb529088b602c"]
3 changes: 2 additions & 1 deletion .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -74,5 +74,6 @@
"modules": true
}
},
"parser": "babel-eslint"
"parser": "@typescript-eslint/parser"
// "extends": ["plugin:@typescript-eslint/recommended"]
}
5 changes: 2 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
### [5.0.8](https://github.com/Masquerade-Circus/valyrian.js/compare/5.0.7...5.0.8) (2020-12-08)


### Bug Fixes

* **router:** fix bug removing home unique slash ([9ae422f](https://github.com/Masquerade-Circus/valyrian.js/commit/9ae422feb70b0ba3097fcf64596d896638e7675a))
* **router/node:** allow urls ending in slash as a valid route. v.inline.css now only minifies wo map ([3047229](https://github.com/Masquerade-Circus/valyrian.js/commit/3047229871aa615696b9b29998d8301381eb67da))
* **router:** fix bug removing home unique slash ([9ae422f](https://github.com/Masquerade-Circus/valyrian.js/commit/9ae422feb70b0ba3097fcf64596d896638e7675a))
* **router/node:** allow urls ending in slash as a valid route. v.inline.css now only minifies wo map ([3047229](https://github.com/Masquerade-Circus/valyrian.js/commit/3047229871aa615696b9b29998d8301381eb67da))

### [5.0.7](https://github.com/Masquerade-Circus/valyrian.js/compare/5.0.6...5.0.7) (2020-12-07)

Expand Down
132 changes: 132 additions & 0 deletions bench/.bench-test.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
[
{
"tag": "898696a81b7265ff5f3311ac95e2f75cc4ff8e5b",
"timestamp": "2021-04-28T23:42:22.955Z",
"suites": {
"hyperscript": {
"Valyrian next": {
"hz": 848454597.2350883,
"cycles": 7,
"count": 46929770,
"times": {
"cycle": 0.0553120581265432,
"elapsed": 6.036,
"period": 1.1786134499816043e-9,
"timeStamp": 1619653288587
}
},
"Valyrian 5.0.8": {
"hz": 846741853.8975248,
"cycles": 8,
"count": 47103726,
"times": {
"cycle": 0.05562938194584701,
"elapsed": 6.225,
"period": 1.1809974851213896e-9,
"timeStamp": 1619653282354
}
}
},
"Set.has vs [].indexOf": {},
"Object.keys for loop vs Object.keys for of vs for in": {},
"typeof function vs startsWith vs charAt vs string[0]": {},
"Array.isArray vs typeof object & Array.isArray": {},
"Mount and update: Mount": {
"Valyrian 5.0.8": {
"hz": 297270.17292800767,
"cycles": 6,
"count": 16437,
"times": {
"cycle": 0.055293135662085685,
"elapsed": 6.078,
"period": 0.000003363943278097322,
"timeStamp": 1619653294632
}
},
"Valyrian next": {
"hz": 291317.89343715506,
"cycles": 6,
"count": 16922,
"times": {
"cycle": 0.05808774668916971,
"elapsed": 6.027,
"period": 0.0000034326762019365153,
"timeStamp": 1619653300715
}
}
},
"Mount and update: Update": {
"Valyrian next": {
"hz": 358401.3303945263,
"cycles": 6,
"count": 19964,
"times": {
"cycle": 0.05570291822863418,
"elapsed": 5.929,
"period": 0.0000027901682142173,
"timeStamp": 1619653312864
}
},
"Valyrian 5.0.8": {
"hz": 349095.01074729644,
"cycles": 8,
"count": 19630,
"times": {
"cycle": 0.056231110143850786,
"elapsed": 6.107,
"period": 0.0000028645496762022817,
"timeStamp": 1619653306750
}
}
},
"Mount and update: Render list": {
"vOld": {
"hz": 345.7026579518291,
"cycles": 5,
"count": 20,
"times": {
"cycle": 0.05785318550483011,
"elapsed": 6.049,
"period": 0.0028926592752415055,
"timeStamp": 1619653318800
}
},
"VNext": {
"hz": 343.8288552544732,
"cycles": 6,
"count": 19,
"times": {
"cycle": 0.05526005077711642,
"elapsed": 6.154,
"period": 0.0029084237251113905,
"timeStamp": 1619653324855
}
}
},
"Mount and update: Render keyed list": {
"vOld": {
"hz": 309.7662213667062,
"cycles": 3,
"count": 17,
"times": {
"cycle": 0.054880096109236935,
"elapsed": 5.961,
"period": 0.003228240947602173,
"timeStamp": 1619653331016
}
},
"VNext": {
"hz": 307.2498890113779,
"cycles": 5,
"count": 17,
"times": {
"cycle": 0.0553295561951219,
"elapsed": 5.972,
"period": 0.003254679776183641,
"timeStamp": 1619653336982
}
}
}
}
}
]
44 changes: 44 additions & 0 deletions bench/hyperscript.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
let { compare, benchmark, before } = require("@masquerade-circus/bench-test");

import "../lib/index";

import expect from "expect";
import fs from "fs";
import nodePlugin from "../plugins/node";
import vOld from "./index-old";

let VNext = v;

vOld.usePlugin(nodePlugin);

compare("hyperscript", () => {
let date = new Date();
before(async () => {
vOld.inline.extensions("ts");
await vOld.inline.ts("./lib/index.ts", { outputOptions: { compact: true } });
await vOld.inline.js("./bench/index-old.js", { outputOptions: { compact: true } });
console.log(vOld.inline.ts()[0].raw.length);
console.log(vOld.inline.js()[0].raw.length);

let compiled = fs.readFileSync("./dist/valyrian.min.js", "utf8");
console.log(compiled.length);

expect(vOld("div", null, [null, "Hello", , 1, date, { hello: "world" }, ["Hello"]])).toEqual({
name: "div",
props: {},
children: [[null, "Hello", undefined, 1, date, { hello: "world" }, ["Hello"]]]
});
expect(VNext("div", null, [null, "Hello", , 1, date, { hello: "world" }, ["Hello"]])).toEqual({
name: "div",
props: {},
children: [[null, "Hello", undefined, 1, date, { hello: "world" }, ["Hello"]]]
});
});

benchmark("Valyrian 5.0.8", () => {
vOld("div", null, [null, "Hello", , 1, date, { hello: "world" }, ["Hello"]]);
});
benchmark("Valyrian next", () => {
VNext("div", null, [null, "Hello", , 1, date, { hello: "world" }, ["Hello"]]);
});
});
Loading

0 comments on commit f8ec286

Please sign in to comment.