blob: 596d779310a7a12c32e3bd3e5e43c0a87144c9d2 [file] [log] [blame]
<!--
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>