You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

103 lines
2.1 KiB

var BenchClass = function () {
this.suites = [];
this.THREE = window.THREE;
window.THREE = undefined;
Benchmark.options.maxTime = 1.0;
return this;
};
BenchClass.prototype.isTHREELoaded = function () {
return _.isObject( this.THREE );
};
BenchClass.prototype.newSuite = function ( name ) {
var s = new Benchmark.Suite( name );
this.suites.push( s );
return s;
};
BenchClass.prototype.display = function () {
for ( var x of this.suites ) {
var s = new SuiteUI( x );
s.render();
}
};
BenchClass.prototype.warning = function ( message ) {
console.error( message );
};
var SuiteUI = function ( suite ) {
this.suite = suite;
this.isRunning = false;
return this;
};
SuiteUI.prototype.render = function () {
var n = document.importNode( this.suiteTemplate, true );
this.elem = n.querySelector( 'article' );
this.results = n.querySelector( '.results' );
this.title = n.querySelector( 'h2' );
this.runButton = n.querySelector( 'h3' );
this.title.innerText = this.suite.name;
this.runButton.onclick = this.run.bind( this );
this.section.appendChild( n );
};
SuiteUI.prototype.run = function () {
this.runButton.click = _.noop;
this.runButton.innerText = 'Running...';
this.suite.on( 'complete', this.complete.bind( this ) );
this.suite.run( {
async: true
} );
};
SuiteUI.prototype.complete = function () {
this.runButton.style.display = 'none';
this.results.style.display = 'block';
var f = _.orderBy( this.suite, [ 'hz' ], [ 'desc' ] );
for ( var i = 0; i < f.length; i ++ ) {
var x = f[ i ];
var n = document.importNode( this.suiteTestTemplate, true );
n.querySelector( '.name' ).innerText = x.name;
n.querySelector( '.ops' ).innerText = x.hz.toFixed();
n.querySelector( '.desv' ).innerText = x.stats.rme.toFixed( 2 );
this.results.appendChild( n );
}
};
var Bench = new BenchClass();
window.addEventListener( 'load', function () {
SuiteUI.prototype.suiteTemplate = document.querySelector( '#suite' ).content;
SuiteUI.prototype.suiteTestTemplate = document.querySelector( '#suite-test' ).content;
SuiteUI.prototype.section = document.querySelector( 'section' );
Bench.display();
} );