mirror of
https://github.com/amark/gun.git
synced 2025-03-30 15:08:33 +00:00
101 lines
4.4 KiB
JavaScript
101 lines
4.4 KiB
JavaScript
var Gun = (typeof window !== "undefined")? window.Gun : require('../../../gun/gun');
|
|
|
|
var Radisk = (Gun.window && window.Radisk) || require('../../../gun/lib/radisk');
|
|
Gun.TESTING = true;
|
|
try{localStorage.clear()}catch(e){}
|
|
try{indexedDB.deleteDatabase('radatatest');}catch(e){}
|
|
try{indexedDB.deleteDatabase('radata');}catch(e){}
|
|
|
|
var opt = {localStorage: false};
|
|
//opt.chunk = 1024;
|
|
opt.store = (Gun.window && window.RindexedDB(opt)) || require('../../../gun/lib/rfs')(opt)
|
|
var rad = Radisk(opt);
|
|
//var gun = Gun(opt);
|
|
var gun = Gun('http://localhost:8765/gun');
|
|
|
|
Gun.window && (wait.onchange = function(){ spam.wait = this.value })
|
|
Gun.window && (burst.onchange = function(){ spam.burst = this.value })
|
|
//setTimeout(spam, 1);
|
|
function spam(){
|
|
//spam.max = 100000; spam.left = spam.max; spam.wait = 1; spam.burst = 250; spam.c = 0; spam.s = (+new Date);
|
|
//spam.max = 1000000; spam.left = spam.max; spam.wait = 0; spam.burst = 100; spam.c = 0; spam.s = (+new Date);
|
|
//spam.max = 300000; spam.left = spam.max; spam.wait = 1; spam.burst = 5; spam.c = 0; spam.s = (+new Date);
|
|
//spam.max = 100000; spam.left = spam.max; spam.wait = 0; spam.burst = 2; spam.c = 0; spam.s = (+new Date);
|
|
//spam.max = 100000; spam.left = spam.max; spam.wait = 20; spam.burst = 2; spam.c = 0; spam.s = (+new Date);
|
|
//spam.max = 100; spam.left = spam.max; spam.wait = 1; spam.burst = 1; spam.c = 0; spam.s = (+new Date);
|
|
spam.max = 100000; spam.left = spam.max; spam.wait = 100; spam.burst = 100; spam.c = 99; spam.s = (+new Date);
|
|
var S = +new Date, slow = 0; console.only.i = 1;
|
|
var to = setTimeout(function gap(){
|
|
if(spam.c >= spam.max){ clearTimeout(to); return; }
|
|
setTimeout(gap, Math.random() * 100);
|
|
var b = spam.burst;
|
|
b = Math.ceil(Math.random() * b);
|
|
//console.log('spam', +new Date - S, spam.c); S = +new Date;
|
|
if(!b){ b = burst = 1 }
|
|
while(b--){ go(++spam.c) }
|
|
function go(i){ var d = 0, s = +new Date;
|
|
i = Math.random().toString(32).slice(2);
|
|
//console.log('go', spam.c, i);
|
|
//setTimeout(function(){ var ack = {err: 0, ok: 1};
|
|
//loc.put(i, {test: i}, function(err, ok){ var ack = {err: err, ok: ok};
|
|
//ind.put(i, {test: i}, function(err, ok){ var ack = {err: err, ok: ok};
|
|
//rad(i, {test: i}, function(err, ok){ var ack = {err: err, ok: ok};
|
|
var ref = gun.get(i).put({test: i}, function(ack){
|
|
var t = (+new Date - s)/1000; if(1 < t){ ++slow; }
|
|
if(ack.err){ console.log(ack); }
|
|
if(d++){ return }
|
|
if(--spam.left){ return }
|
|
spam.end = (+new Date) - spam.s;
|
|
console.log('DONE!\n', spam.max, 'in', spam.end/1000, 'seconds\n', Math.round(spam.max / (spam.end/1000)), 'per second. Slow:' + slow);
|
|
Gun.window && (document.body.style.backgroundColor = 'lime');
|
|
});
|
|
}
|
|
},spam.wait);
|
|
setInterval(function(){
|
|
if(spam.end === true){ return }
|
|
if(spam.end){ spam.end = true }
|
|
var t = (+new Date) - spam.s, tmp, sec;
|
|
var status = 'saved\n'+ (tmp = (spam.max - spam.left)) +' in '+ (sec = (t/1000)) +' seconds\n'+ Math.round(tmp / sec) +' per second';
|
|
(Gun.window && (debugs.innerText = status)) || console.log(status.replace(/\n/ig,' '));
|
|
}, 500);
|
|
}
|
|
!Gun.window && setTimeout(spam,1);
|
|
|
|
;(function(){
|
|
if(!Gun.window){ return }
|
|
;(function(){
|
|
var f = 'index';
|
|
indexedDB.deleteDatabase(f);
|
|
var o = indexedDB.open(f, 1), ind = {}, db;
|
|
o.onupgradeneeded = function(eve){ (eve.target.result).createObjectStore(f) }
|
|
o.onsuccess = function(){ db = o.result }
|
|
o.onerror = function(eve){ console.log(eve||1); }
|
|
ind.put = function(key, data, cb){
|
|
if(!db){ setTimeout(function(){ ind.put(key, data, cb) },9); return }
|
|
var tx = db.transaction([f], 'readwrite');
|
|
var obj = tx.objectStore(f);
|
|
var req = obj.put(data, ''+key);
|
|
req.onsuccess = obj.onsuccess = tx.onsuccess = function(){ cb(null, 1) }
|
|
req.onabort = obj.onabort = tx.onabort = function(eve){ cb(eve||2) }
|
|
req.onerror = obj.onerror = tx.onerror = function(eve){ cb(eve||3) }
|
|
}
|
|
ind.get = function(key, cb){
|
|
if(!db){ setTimeout(function(){ ind.get(key, cb) },9); return }
|
|
var tx = db.transaction([f], 'readwrite');
|
|
var obj = tx.objectStore(f);
|
|
var req = obj.get(''+key);
|
|
req.onsuccess = function(){ cb(null, req.result) }
|
|
req.onabort = function(eve){ cb(eve||4) }
|
|
req.onerror = function(eve){ cb(eve||5) }
|
|
}
|
|
window.ind = ind;
|
|
}());
|
|
|
|
;(function(){
|
|
localStorage.clear();
|
|
var ls = localStorage, loc = {};
|
|
loc.put = function(key, data, cb){ ls[''+key] = data; cb(null, 1) }
|
|
loc.get = function(key, cb){ cb(null, ls[''+key]) }
|
|
window.loc = loc;
|
|
}());
|
|
}()); |