mirror of
https://github.com/amark/gun.git
synced 2025-06-03 20:56:43 +00:00
prof back in
This commit is contained in:
parent
c58e412208
commit
b4568e52c3
@ -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
10
gun.js
@ -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);
|
||||
|
@ -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){
|
||||
|
@ -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",
|
||||
|
Loading…
x
Reference in New Issue
Block a user