"use strict"; /* eslint-env browser, jquery */ const Runner = require( "./runner.js" ); const benchmarks = require( "./benchmarks.js" ); $( "#run" ).click( () => { // Results Table Manipulation const resultsTable = $( "#results-table" ); function appendResult( klass, title, url, inputSize, parseTime ) { const KB = 1024; const MS_IN_S = 1000; resultsTable.append( ` ${ url !== null ? "" : "" } ${ title } ${ url !== null ? "" : "" } ${ ( inputSize / KB ).toFixed( 2 ) }  kB ${ parseTime.toFixed( 2 ) }  ms ${ ( ( inputSize / KB ) / ( parseTime / MS_IN_S ) ).toFixed( 2 ) }  kB/s ` ); } // Main // Each input is parsed multiple times and the results are averaged. We // do this for two reasons: // // 1. To warm up the interpreter (PEG.js-generated parsers will be // most likely used repeatedly, so it makes sense to measure // performance after warming up). // // 2. To minimize random errors. const runCount = parseInt( $( "#run-count" ).val(), 10 ); const options = { cache: $( "#cache" ).is( ":checked" ), optimize: $( "#optimize" ).val() }; if ( isNaN( runCount ) || runCount <= 0 ) { alert( "Number of runs must be a positive integer." ); return; } Runner.run( benchmarks, runCount, options, { readFile( file ) { return $.ajax( { type: "GET", url: "/" + file, dataType: "text", async: false } ).responseText; }, testStart() { // Nothing to do. }, testFinish( benchmark, test, inputSize, parseTime ) { appendResult( "individual", test.title, "benchmark/" + benchmark.id + "/" + test.file, inputSize, parseTime ); }, benchmarkStart( benchmark ) { resultsTable.append( ` ${ benchmark.title } " ` ); }, benchmarkFinish( benchmark, inputSize, parseTime ) { appendResult( "benchmark-total", benchmark.title + " total", null, inputSize, parseTime ); }, start() { $( "#run-count, #cache, #run" ).attr( "disabled", "disabled" ); resultsTable.show(); $( "#results-table tr" ).slice( 1 ).remove(); }, finish( inputSize, parseTime ) { appendResult( "total", "Total", null, inputSize, parseTime ); $.scrollTo( "max", { axis: "y", duration: 500 } ); $( "#run-count, #cache, #run" ).removeAttr( "disabled" ); } } ); } ); $( document ).ready( () => $( "#run" ).focus() );