mirror of
https://github.com/harttle/liquidjs.git
synced 2026-09-16 21:00:40 -07:00
chore: perf diff against latest release
This commit is contained in:
@@ -5,8 +5,8 @@ const data = require('./data/todolist.json')
|
||||
const path = require('path')
|
||||
|
||||
const engines = {
|
||||
liquid: require('./engines/liquid'),
|
||||
handlebars: require('./engines/handlebars'),
|
||||
liquid: require('./engines/liquid'),
|
||||
react: require('./engines/react'),
|
||||
swig: require('./engines/swig')
|
||||
}
|
||||
|
||||
Executable
+47
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env node
|
||||
const { performance } = require('perf_hooks')
|
||||
const path = require('path')
|
||||
|
||||
const FILE_LOCAL = process.argv[2]
|
||||
const FILE_LATEST = process.argv[3]
|
||||
console.log(`Local: ${FILE_LOCAL}`)
|
||||
console.log(`Latest: ${FILE_LATEST}`)
|
||||
|
||||
const { createEngine } = require('./engines/create-liquid')
|
||||
const local = createEngine(require(path.resolve(__dirname, '..', FILE_LOCAL)))
|
||||
const latest = createEngine(require(path.resolve(__dirname, '..', FILE_LOCAL)))
|
||||
const data = require('./data/todolist.json')
|
||||
const tpl = path.resolve(__dirname, `templates/todolist`)
|
||||
|
||||
const begin = performance.now()
|
||||
const tplLocal = local.load(tpl)
|
||||
const tplLatest = latest.load(tpl)
|
||||
const tasks = [
|
||||
{
|
||||
cycles: 0,
|
||||
time: 0,
|
||||
fn: () => latest.render(tplLatest, data)
|
||||
},
|
||||
{
|
||||
cycles: 0,
|
||||
time: 0,
|
||||
fn: () => local.render(tplLocal, data)
|
||||
}
|
||||
]
|
||||
while (performance.now() - begin < 20e3) {
|
||||
const task = tasks[Math.floor(Math.random() * 2)]
|
||||
task.time -= performance.now()
|
||||
task.fn()
|
||||
task.time += performance.now()
|
||||
task.cycles++
|
||||
}
|
||||
|
||||
const [ latestResult, localResult ] = tasks.map(task => {
|
||||
task.perf = task.cycles * 1000 / task.time
|
||||
return task
|
||||
})
|
||||
const diff = (localResult.perf - latestResult.perf) / latestResult.perf
|
||||
|
||||
console.log(`Local: ${localResult.perf.toFixed(3)} ops/s (${localResult.cycles} cycles)`)
|
||||
console.log(`Latest: ${latestResult.perf.toFixed(3)} ops/s (${latestResult.cycles} cycles)`)
|
||||
console.log(`Diff: ${(diff * 100).toFixed(3)}%`)
|
||||
@@ -0,0 +1,17 @@
|
||||
const { readFileSync } = require('fs')
|
||||
const { join } = require('path')
|
||||
|
||||
function createEngine (pkg) {
|
||||
const liquid = new pkg.Liquid({
|
||||
root: join(__dirname, '../templates'),
|
||||
cache: true,
|
||||
extname: '.liquid'
|
||||
})
|
||||
liquid.registerFilter('url', path => `http://example.com${path}`)
|
||||
return {
|
||||
load: path => liquid.parse(readFileSync(path + '.liquid', 'utf8')),
|
||||
render: (tpl, data) => liquid.renderSync(tpl, data)
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { createEngine }
|
||||
@@ -1,16 +1,3 @@
|
||||
const { Liquid } = require('../..')
|
||||
const { readFileSync } = require('fs')
|
||||
const { join } = require('path')
|
||||
const { createEngine } = require('./create-liquid')
|
||||
|
||||
const liquid = new Liquid({
|
||||
root: join(__dirname, '../templates'),
|
||||
cache: true,
|
||||
extname: '.liquid'
|
||||
})
|
||||
|
||||
liquid.registerFilter('url', path => `http://example.com${path}`)
|
||||
|
||||
module.exports = {
|
||||
load: path => liquid.parse(readFileSync(path + '.liquid', 'utf8')),
|
||||
render: (tpl, data) => liquid.renderSync(tpl, data)
|
||||
}
|
||||
module.exports = createEngine(require('../../dist/liquid.node.cjs'))
|
||||
|
||||
Reference in New Issue
Block a user