export default class Measure { startTimes = {}; endTimes = {}; writeToPage = false; element = false; start ( label ) { this.startTimes[ label ] = performance.now(); } end ( label ) { this.endTimes[ label ] = performance.now(); this.log( label ); } getElapsed ( label ) { if ( this.startTimes[ label ] === undefined || this.endTimes[ label ] === undefined ) { throw new Error( "Start or end time missing for label: " + label ); } return this.endTimes[ label ] - this.startTimes[ label ]; } log ( label ) { const elapsed = this.getElapsed( label ); if( this.writeToPage ) { var p = document.createElement("p") p.innerText = label + " took " + elapsed.toFixed(3) + " ms"; this.element.appendChild( p ); } console.log( label + " took " + elapsed.toFixed(3) + " ms" ); } }