2025-05-12 05:38:44 +09:00

80 lines
1.9 KiB
JavaScript

(function () {
var BenchView = function (benchmark) {
this.benchmark = benchmark
var benchmarkTemplate = $('#benchmark-template').text()
this.html = $(Mustache.to_html(benchmarkTemplate, benchmark))
this.benchmark.on('start', this.started.bind(this))
this.benchmark.on('complete', this.completed.bind(this))
this.benchmark.on('error', this.errored.bind(this))
this.html.find('button').bind('click', function () {
benchmark.run({async: true})
})
}
BenchView.prototype.started = function () {
this.html
.addClass('is-running')
.find('.status')
.html('Running…')
}
BenchView.prototype.completed = function () {
this.html
.removeClass('is-running')
.find('.status')
.text('Done')
.end()
.find('.ops-per-sec')
.text(Benchmark.formatNumber(this.benchmark.hz.toFixed(2)))
}
BenchView.prototype.errored = function () {
this.html
.removeClass('is-running')
.addClass('is-errored')
.find('.status')
.text('Error')
throw(this.benchmark.error)
}
benchmarks = []
var bench = function (name, testFn, options) {
var benchmark = new Benchmark(name, testFn, options)
benchmarks.push(benchmark)
}
bench.runAll = function () {
for (var i = 1; i < benchmarks.length; i++) {
var benchmark = benchmarks[i],
prev = benchmarks[i - 1]
prev.on('complete', function () {
console.log(benchmark)
benchmark.run({async: true})
})
}
benchmarks[0].run({async: true})
}
$(document).ready(function () {
var benchmarksContainer = $('#benchmarks tbody')
benchmarks.forEach(function (benchmark) {
var benchView = new BenchView (benchmark)
benchmarksContainer.append(benchView.html)
})
$('button.run').click(function () {
//bench.runAll()
})
})
window.bench = bench
})()