80 lines
1.9 KiB
JavaScript
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
|
|
})()
|