prof back in

This commit is contained in:
Mark Nadal 2020-03-03 11:25:23 -08:00
parent c58e412208
commit b4568e52c3
4 changed files with 24 additions and 16 deletions

View File

@ -29,7 +29,7 @@
.tall { height: 5em; }
</style>
<div class="center"><span class="shout" id="peers">0</span> peers <span class="shout" id="time">0</span> min <span class="shout" id="nodes">0</span> nodes <span class="shout" id="hours">0</span> hours</div>
<div class="center"><span class="shout" id="peers">0</span> peers <span class="shout" id="time">0</span> min <span class="shout" id="nodes">0</span> nodes <span class="shout" id="hours">0</span> hours <span class="shout" id="block">0</span> block</div>
<input id="url" class="center input crack" placeholder="enter peer stats source url">
@ -44,10 +44,12 @@
<script src="./jquery.js"></script>
<script src="./smoothie.js" charset="utf-8"></script>
<script>
var up;
var up, br = 0, bt = 0;
var fetchData = async function(){
// fetch the data from server
var S = +new Date;
var data = await (await fetch(url.value||(location.origin+'/gun/stats.radata'), {method: 'GET',mode: 'cors'})).json();
$('#block').text((br += (+new Date - S)) / ++bt);
data.over = (data.over/1000) || 15;
$('#peers').text(data.peers.count);
$('#time').text((data.peers.time / 1000 / 60).toFixed(0));

10
gun.js
View File

@ -201,6 +201,7 @@
if(Q.length){ Q.push(cb); return } Q = [cb];
to(function go(S){ S = S || +new Date;
var i = 0, cb; while(i < 9 && (cb = Q[i++])){ cb() }
console.STAT && console.STAT(S, +new Date - S, 'puff');
if(cb && !(+new Date - S)){ return go(S) }
if(!(Q = Q.slice(i)).length){ return }
to(go, 0);
@ -2072,10 +2073,12 @@
console.STAT && console.STAT(+new Date, msg.length, '# on hear batch');
var P = opt.puff;
(function go(){
var S = +new Date;
//var P = peer.puff || opt.puff, s = +new Date; // TODO: For future, but in mix?
var i = 0, m; while(i < P && (m = msg[i++])){ hear(m, peer) }
//peer.puff = Math.ceil((+new Date - s)? P * 1.1 : P * 0.9);
msg = msg.slice(i); // slicing after is faster than shifting during.
console.STAT && console.STAT(S, +new Date - S, 'hear loop');
flush(peer); // force send all synchronously batched acks.
if(!msg.length){ return }
puff(go, 0);
@ -2152,9 +2155,9 @@
if(!peer && mesh.way){ return mesh.way(msg) }
if(!peer || !peer.id){ message = msg;
if(!Type.obj.is(peer || opt.peers)){ return false }
var S = +new Date;
var P = opt.puff, ps = opt.peers, pl = Object.keys(peer || opt.peers || {}); // TODO: BETTER PERF? No object.keys? It is polyfilled by Type.js tho.
;(function go(){
var S = +new Date;
//Type.obj.map(peer || opt.peers, each); // in case peer is a peer list.
loop = 1; var wr = meta.raw; meta.raw = raw; // quick perf hack
var i = 0, p; while(i < 9 && (p = (pl||'')[i++])){
@ -2163,7 +2166,8 @@
}
meta.raw = wr; loop = 0;
pl = pl.slice(i); // slicing after is faster than shifting during.
if(!pl.length){ console.STAT && console.STAT(S, +new Date - S, 'say loop'); return }
console.STAT && console.STAT(S, +new Date - S, 'say loop');
if(!pl.length){ return }
puff(go, 0);
dup_track(msg['@']); // keep for later
}());
@ -2186,7 +2190,7 @@
//peer.batch = [];
peer.batch = '['; // TODO: Prevent double JSON!
var S = +new Date, ST;
puff(function(){
setTimeout(function(){
console.STAT && (ST = +new Date - S) > 9 && console.STAT(S, ST, '0ms TO', id, peer.id);
flush(peer);
}, opt.gap);

View File

@ -19,7 +19,8 @@
function ename(t){ return encodeURIComponent(t).replace(/\*/g, '%2A') }
function atomic(v){ return u !== v && (!v || 'object' != typeof v) }
var puff = setTimeout.puff || (typeof setImmediate !== "undefined")? setTimeout : setImmediate;
var timediate = (typeof setImmediate !== "undefined")? setTimeout : setImmediate;
var puff = setTimeout.puff || timediate;
var map = Gun.obj.map;
var obj_empty = Gun.obj.empty;
var ST = 0;
@ -96,7 +97,7 @@
delete disk.tags;
r.write(file, disk, s.ack, u, DBG);
}
s.ack = function puff(err, ok){
s.ack = function(err, ok){
DBG && (DBG.sa = DBG.sa || +new Date);
DBG && (DBG.sal = q.length);
var ack, tmp;
@ -284,7 +285,11 @@
if(!o.more){ cb(g.err, data, o); return }
if(data){ cb(g.err, data, o) }
if(o.parsed >= o.limit){ return }
puff(function(){ r.parse(o.next, g.check) },0);
var S = +new Date;
timediate(function(){
console.STAT && console.STAT(S, +new Date - S, 'rad more');
r.parse(o.next, g.check);
},0);
}
g.check = function(err, disk, info){
g.get(err, disk, info);
@ -367,15 +372,12 @@
p.map = function(){
if(!q || !q.length){ return }
//var i = 0, l = q.length, ack;
var S = +new Date;
var err = p.err, data = p.not? u : p.disk;
SM = SM || +new Date; SL = SL || q.length;
//for(;i < l; i++){ (ack = q[i]) && ack(err, data, info) }
var i = 0, ack; while(i < 9 && (ack = q[i++])){ ack(err, data, info) }
if(!(q = q.slice(i)).length){
console.STAT && console.STAT(S, +new Date - SM, 'rad packs', ename(file));
console.STAT && console.STAT(S, SL, 'rad packs #', ename(file));
return
}
console.STAT && console.STAT(S, +new Date - S, 'rad packs', ename(file));
console.STAT && console.STAT(S, i, 'rad packs #', ename(file));
if(!(q = q.slice(i)).length){ return }
puff(p.map, 0);
}
p.ack = function(cb){

View File

@ -7,7 +7,7 @@
"ios": "browser.ios.js",
"android": "browser.android.js",
"scripts": {
"start": "node examples/http.js",
"start": "node --prof examples/http.js",
"debug": "node --prof-process --preprocess -j isolate*.log > v8.json && rm isolate*.log && echo 'drag & drop ./v8.json into https://mapbox.github.io/flamebearer/'",
"https": "HTTPS_KEY=test/https/server.key HTTPS_CERT=test/https/server.crt npm start",
"prepublishOnly": "npm run unbuild",