mirror of
https://github.com/9001/copyparty.git
synced 2025-08-16 08:32:13 -06:00
ping.html: add mdev, limit
This commit is contained in:
parent
7de9d15aef
commit
910797ccb6
|
@ -55,6 +55,10 @@ input {
|
||||||
<td>interval (msec):</td>
|
<td>interval (msec):</td>
|
||||||
<td><input id="delay" type="text" value="1000" size="7" /></td>
|
<td><input id="delay" type="text" value="1000" size="7" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>num pings:</td>
|
||||||
|
<td><input id="more" type="text" value="100" size="7" /></td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td> </td>
|
<td> </td>
|
||||||
<td><input id="start" type="button" value="start" onclick="okgo();return false" /></td>
|
<td><input id="start" type="button" value="start" onclick="okgo();return false" /></td>
|
||||||
|
@ -65,14 +69,14 @@ input {
|
||||||
<td>avg</td>
|
<td>avg</td>
|
||||||
<td>med</td>
|
<td>med</td>
|
||||||
<td>max</td>
|
<td>max</td>
|
||||||
<td>jitter</td>
|
<td>mdev</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id="min">x</td>
|
<td id="min">x</td>
|
||||||
<td id="avg">x</td>
|
<td id="avg">x</td>
|
||||||
<td id="med">x</td>
|
<td id="med">x</td>
|
||||||
<td id="max">x</td>
|
<td id="max">x</td>
|
||||||
<td id="jit">x</td>
|
<td id="mdv">x</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<div id="log">
|
<div id="log">
|
||||||
|
@ -92,11 +96,16 @@ var log = [],
|
||||||
srt = [],
|
srt = [],
|
||||||
delay,
|
delay,
|
||||||
t0 = -1,
|
t0 = -1,
|
||||||
|
nbad = 0,
|
||||||
|
min = 9999999,
|
||||||
|
max = 0,
|
||||||
|
sum = 0,
|
||||||
|
sum2 = 0,
|
||||||
omin = ebi('min'),
|
omin = ebi('min'),
|
||||||
omax = ebi('max'),
|
omax = ebi('max'),
|
||||||
oavg = ebi('avg'),
|
oavg = ebi('avg'),
|
||||||
omed = ebi('med'),
|
omed = ebi('med'),
|
||||||
ojit = ebi('jit'),
|
omdv = ebi('mdv'),
|
||||||
olog = ebi('log');
|
olog = ebi('log');
|
||||||
|
|
||||||
function insert(t, v) {
|
function insert(t, v) {
|
||||||
|
@ -110,12 +119,24 @@ function insert(t, v) {
|
||||||
}
|
}
|
||||||
t.splice(lo, 0, v);
|
t.splice(lo, 0, v);
|
||||||
}
|
}
|
||||||
|
function f2f(val, nd) {
|
||||||
|
val = (parseFloat(val) * Math.pow(10, nd)).toFixed(0).split('.')[0];
|
||||||
|
return nd ? (val.slice(0, -nd) || '0') + '.' + val.slice(-nd) : val;
|
||||||
|
}
|
||||||
function okgo() {
|
function okgo() {
|
||||||
if (t0 < 0)
|
if (t0 < 0)
|
||||||
ping();
|
ping();
|
||||||
}
|
}
|
||||||
function ping() {
|
function ping() {
|
||||||
var xh,
|
var xh,
|
||||||
|
more = parseInt(ebi('more').value) - 1,
|
||||||
|
stats = [omin.innerHTML, omed.innerHTML, omax.innerHTML, omdv.innerHTML];
|
||||||
|
|
||||||
|
if (more < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (more > 499)
|
||||||
|
more = 499;
|
||||||
|
|
||||||
delay = parseInt(ebi('delay').value);
|
delay = parseInt(ebi('delay').value);
|
||||||
if (delay < 100)
|
if (delay < 100)
|
||||||
|
@ -138,40 +159,39 @@ function ping() {
|
||||||
ok = rsp.indexOf('o7') === 0;
|
ok = rsp.indexOf('o7') === 0;
|
||||||
|
|
||||||
if (!ok)
|
if (!ok)
|
||||||
alert("ping response invalid or corrupted: " + xh.resp);
|
nbad++;
|
||||||
|
|
||||||
|
sum += t;
|
||||||
|
sum2 += t * t;
|
||||||
log.push(t);
|
log.push(t);
|
||||||
insert(srt, t);
|
insert(srt, t);
|
||||||
|
|
||||||
var min = 9999999,
|
if (min > t)
|
||||||
avg = 0,
|
min = t;
|
||||||
max = 0;
|
|
||||||
|
|
||||||
for (var a=0; a<log.length; a++) {
|
if (max < t)
|
||||||
min = Math.min(min, log[a]);
|
max = t;
|
||||||
max = Math.max(max, log[a]);
|
|
||||||
avg += log[a];
|
var avg = sum / log.length,
|
||||||
}
|
smean = sum2 / log.length,
|
||||||
avg /= log.length;
|
med = srt[Math.floor(srt.length/2)],
|
||||||
var med = srt[Math.floor(srt.length/2)],
|
mdev = Math.sqrt(smean-(avg*avg));
|
||||||
jofs = Math.floor((5*srt.length)/6),
|
|
||||||
jit = '?';
|
|
||||||
|
|
||||||
if (jofs < srt.length) {
|
|
||||||
jit = srt[jofs] - med;
|
|
||||||
jit = Math.round((jit / med) * 100) + '%';
|
|
||||||
}
|
|
||||||
omin.innerHTML = min;
|
omin.innerHTML = min;
|
||||||
omax.innerHTML = max;
|
omax.innerHTML = max;
|
||||||
oavg.innerHTML = Math.round(avg);
|
oavg.innerHTML = Math.round(avg);
|
||||||
omed.innerHTML = med;
|
omed.innerHTML = med;
|
||||||
olog.innerHTML = log.join(', ') + '<br /><br />' + srt.join(', ');
|
omdv.innerHTML = f2f(mdev, 2);
|
||||||
|
olog.innerHTML = log.join(', ') + '<br /><br />' + srt.join(', ') + (
|
||||||
|
nbad ? "<br /><br />invalid/corrupted ping responses: " + nbad : '');
|
||||||
setTimeout(ping, delay);
|
setTimeout(ping, delay);
|
||||||
};
|
};
|
||||||
t0 = new Date().getTime();
|
t0 = new Date().getTime();
|
||||||
stats.push(t0);
|
stats.push(t0);
|
||||||
xh.open("GET", "/?setck=a=x&ping="+stats.join(","), true);
|
xh.open("GET", "/?setck=a=x&ping="+stats.join(","), true);
|
||||||
xh.send();
|
xh.send();
|
||||||
|
|
||||||
|
ebi('more').value = more;
|
||||||
olog.innerHTML += '<br /><br />ping...';
|
olog.innerHTML += '<br /><br />ping...';
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
Loading…
Reference in a new issue