From 1126440f5c4ab2d14bd73d8a4b76797357c56574 Mon Sep 17 00:00:00 2001 From: Ben Gubler Date: Thu, 17 Sep 2020 15:17:24 -0600 Subject: [PATCH] Update benchmarks page to include Squirrelly --- browser-tests/benchmark.html | 4 +- browser-tests/benchmark.js | 112 ++++++++++++++++++----------------- 2 files changed, 61 insertions(+), 55 deletions(-) diff --git a/browser-tests/benchmark.html b/browser-tests/benchmark.html index 2e72d8c..6f33c55 100644 --- a/browser-tests/benchmark.html +++ b/browser-tests/benchmark.html @@ -100,8 +100,10 @@ + + - + diff --git a/browser-tests/benchmark.js b/browser-tests/benchmark.js index 80387df..88ad4c4 100644 --- a/browser-tests/benchmark.js +++ b/browser-tests/benchmark.js @@ -16,7 +16,10 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -Eta.defaultConfig.autoTrim = false +Eta.configure({ + autoTrim: false +}) + Sqrl.defaultConfig.autoTrim = false var templateList = {} @@ -51,7 +54,7 @@ templateList['template-fast-mode-raw'] = ` templateList['eta'] = ` ` @@ -112,7 +115,7 @@ templateList['handlebars-raw'] = ` templateList['squirrelly'] = ` ` @@ -146,7 +149,7 @@ var config = { escape: true } -function getParameterByName (name) { +function getParameterByName(name) { var url = window.location.href var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)') var results = regex.exec(url) @@ -261,79 +264,78 @@ var testList = [ }, { - name: 'Jade / pug', + name: 'Handlebars', tester: function () { - var id = config.escape ? 'pug' : 'pug-raw' + var id = config.escape ? 'handlebars' : 'handlebars-raw' var source = templateList[id] - var pug = require('pug') var html = '' for (var i = 0; i < config.calls; i++) { - var fn = pug.compile(source) + var fn = Handlebars.compile(source) html = fn(data) } return html } }, - { - name: 'Handlebars', + name: 'Eta', tester: function () { - var id = config.escape ? 'handlebars' : 'handlebars-raw' - var source = templateList[id] + if (!config.escape) { + Eta.defaultConfig.autoEscape = false + } + var source = templateList['eta'] + // console.log(fn.toString()) var html = '' + data.$name = 'temp' for (var i = 0; i < config.calls; i++) { - var fn = Handlebars.compile(source) - - html = fn(data) + html = Eta.render(source, data) } return html } }, - // { - // name: 'Squirrelly', - // tester: function() { - // if (!config.escape) { - // Sqrl.defaultConfig.autoEscape = false - // } - // var source = templateList['squirrelly'] - // // console.log(fn.toString()) - // var html = '' - // data.$name = 'temp' - // for (var i = 0; i < config.calls; i++) { - // html = Sqrl.render(source, data) - // } - // return html - // } - // }, - // { - // name: 'Squirrelly - Fast', - // tester: function() { - // if (!config.escape) { - // Sqrl.defaultConfig.autoEscape = false - // } - // var source = templateList['squirrelly-fast'] - // // console.log(fn.toString()) - // var html = '' - // data.$name = 'temp' - // for (var i = 0; i < config.calls; i++) { - // html = Sqrl.render(source, data) - // } - // return html - // } - // }, { - name: 'Eta', + name: 'Squirrelly', tester: function () { if (!config.escape) { - Eta.defaultConfig.autoEscape = false + Sqrl.defaultConfig.autoEscape = false } - var source = templateList['eta'] + var source = templateList['squirrelly'] // console.log(fn.toString()) var html = '' data.$name = 'temp' for (var i = 0; i < config.calls; i++) { - html = Eta.render(source, data) + html = Sqrl.render(source, data) + } + return html + } + }, + { + name: 'Squirrelly - Fast', + tester: function () { + if (!config.escape) { + Sqrl.defaultConfig.autoEscape = false + } + var source = templateList['squirrelly-fast'] + // console.log(fn.toString()) + var html = '' + data.$name = 'temp' + for (var i = 0; i < config.calls; i++) { + html = Sqrl.render(source, data) + } + return html + } + }, + { + name: 'Jade / pug', + tester: function () { + var id = config.escape ? 'pug' : 'pug-raw' + var source = templateList[id] + var pug = require('pug') + var html = '' + for (var i = 0; i < config.calls; i++) { + var fn = pug.compile(source) + + html = fn(data) } return html } @@ -461,7 +463,7 @@ var runTest = function (callback) { ] }) - function tester (target) { + function tester(target) { var time = new Timer() var html = target.tester() var endTime = time.stop() @@ -495,7 +497,7 @@ window['restart'] = function (key, value) { config[key] = value } -function getLink () { +function getLink() { window.location.search = 'length=' + config.length + '&calls=' + config.calls + '&escape=' + config.escape } @@ -509,6 +511,8 @@ window['app'] = function (selector) {

Note: doT and Eta usually trade off the lead on unescaped templates. Keep in mind that Eta supports template tags inside strings & comments, plugins, whitespace trimming, etc.

+Note: these benchmarks are ONLY VALID if page is served by a server (localhost, RawGit are ok). Otherwise results are highly variable and inaccurate (I don't know why!) +

Longer (more ops/sec) is better
@@ -520,7 +524,7 @@ window['app'] = function (selector) { × - +