| <!-- |
| Copyright 2015 Google Inc. All rights reserved. |
| |
| Use of this source code is governed by a BSD-style |
| license that can be found in the COPYING file or at |
| https://developers.google.com/open-source/licenses/bsd |
| --> |
| <html> |
| <head> |
| <title>Fetch API benchmark</title> |
| <script src="util_main.js"></script> |
| <script src="util.js"></script> |
| <script src="fetch_benchmark.js"></script> |
| <script> |
| var addressBox = null; |
| |
| function getConfig() { |
| return { |
| prefixUrl: addressBox.value, |
| printSize: getBoolFromCheckBox('printsize'), |
| numFetches: getIntFromInput('numFetches'), |
| // Initial size of messages. |
| numIterations: getIntFromInput('numiterations'), |
| numWarmUpIterations: getIntFromInput('numwarmupiterations'), |
| startSize: getIntFromInput('startsize'), |
| // Stops benchmark when the size of message exceeds this threshold. |
| stopThreshold: getIntFromInput('stopthreshold'), |
| // If the size of each message is small, send/receive multiple messages |
| // until the sum of sizes reaches this threshold. |
| // minTotal: getIntFromInput('mintotal'), |
| // minTotal is not yet implemented on Fetch API benchmark |
| multipliers: getIntArrayFromInput('multipliers'), |
| verifyData: getBoolFromCheckBox('verifydata'), |
| addToLog: addToLog, |
| addToSummary: addToSummary, |
| measureValue: measureValue, |
| notifyAbort: notifyAbort |
| }; |
| } |
| |
| function onSendBenchmark() { |
| var config = getConfig(); |
| config.dataType = getStringFromRadioBox('datatyperadio'); |
| doAction(config, getBoolFromCheckBox('worker'), 'sendBenchmark'); |
| } |
| |
| function onReceiveBenchmark() { |
| var config = getConfig(); |
| config.dataType = getStringFromRadioBox('datatyperadio'); |
| doAction(config, getBoolFromCheckBox('worker'), 'receiveBenchmark'); |
| } |
| |
| function onBatchBenchmark() { |
| var config = getConfig(); |
| doAction(config, getBoolFromCheckBox('worker'), 'batchBenchmark'); |
| } |
| |
| function onStop() { |
| var config = getConfig(); |
| doAction(config, getBoolFromCheckBox('worker'), 'stop'); |
| } |
| |
| function init() { |
| addressBox = document.getElementById('address'); |
| logBox = document.getElementById('log'); |
| |
| summaryBox = document.getElementById('summary'); |
| |
| // Special address of pywebsocket for XHR/Fetch API benchmark. |
| addressBox.value = '/073be001e10950692ccbf3a2ad21c245'; |
| |
| addToLog(window.navigator.userAgent.toLowerCase()); |
| addToSummary(window.navigator.userAgent.toLowerCase()); |
| |
| initWorker('fetch', ''); |
| } |
| </script> |
| </head> |
| <body onload="init()"> |
| |
| <form id="benchmark_form"> |
| url prefix <input type="text" id="address" size="40"> |
| <input type="button" value="send" onclick="onSendBenchmark()"> |
| <input type="button" value="receive" onclick="onReceiveBenchmark()"> |
| <input type="button" value="batch" onclick="onBatchBenchmark()"> |
| <input type="button" value="stop" onclick="onStop()"> |
| |
| <br/> |
| |
| <input type="checkbox" id="printsize" checked> |
| <label for="printsize">Print size and time per message</label> |
| <input type="checkbox" id="verifydata" checked> |
| <label for="verifydata">Verify data</label> |
| <input type="checkbox" id="worker"> |
| <label for="worker">Run on worker</label> |
| |
| <br/> |
| |
| Parameters: |
| |
| <br/> |
| |
| <table> |
| <tr> |
| <td>Number of fetch() requests</td> |
| <td><input type="text" id="numFetches" value="1"></td> |
| </tr> |
| <tr> |
| <td>Number of iterations</td> |
| <td><input type="text" id="numiterations" value="1"></td> |
| </tr> |
| <tr> |
| <td>Number of warm-up iterations</td> |
| <td><input type="text" id="numwarmupiterations" value="0"></td> |
| </tr> |
| <tr> |
| <td>Start size</td> |
| <td><input type="text" id="startsize" value="10240"></td> |
| </tr> |
| <tr> |
| <td>Stop threshold</td> |
| <td><input type="text" id="stopthreshold" value="102400000"></td> |
| </tr> |
| <tr> |
| <td>Minimum total</td> |
| <td><input type="text" id="mintotal" value="102400000"></td> |
| </tr> |
| <tr> |
| <td>Multipliers</td> |
| <td><input type="text" id="multipliers" value="5, 2"></td> |
| </tr> |
| </table> |
| |
| Set data type |
| <input type="radio" |
| name="datatyperadio" |
| id="datatyperadiotext" |
| value="text" |
| checked><label for="datatyperadiotext">text</label> |
| <input type="radio" |
| name="datatyperadio" |
| id="datatyperadioblob" |
| value="blob" |
| ><label for="datatyperadioblob">blob</label> |
| <input type="radio" |
| name="datatyperadio" |
| id="datatyperadioarraybuffer" |
| value="arraybuffer" |
| ><label for="datatyperadioarraybuffer">arraybuffer</label> |
| </form> |
| |
| <div id="log_div"> |
| <textarea |
| id="log" rows="20" style="width: 100%" readonly></textarea> |
| </div> |
| <div id="summary_div"> |
| Summary |
| <textarea |
| id="summary" rows="20" style="width: 100%" readonly></textarea> |
| </div> |
| |
| Note: Effect of RTT and time spent for ArrayBuffer creation in receive benchmarks are not eliminated. |
| |
| </body> |
| </html> |