mirror of
https://github.com/amark/gun.git
synced 2025-03-30 15:08:33 +00:00
102 lines
3.7 KiB
HTML
102 lines
3.7 KiB
HTML
<html>
|
|
<body>
|
|
<h1>RindexedDB</h1>
|
|
|
|
<script src="../../../gun/gun.js"></script>
|
|
<script src="../../../gun/lib/radix.js"></script>
|
|
<script src="../../../gun/lib/radisk.js"></script>
|
|
<script src="../../../gun/lib/store.js"></script>
|
|
<script src="../../../gun/lib/rindexed.js"></script>
|
|
<!-- script src="../../../gun/lib/rls.js"></script -->
|
|
|
|
<button onclick="spam()">spam</button>
|
|
<button onclick="read()">read</button>
|
|
<input id="wait" placeholder="wait" type="number">
|
|
<input id="burst" placeholder="burst" type="number">
|
|
<div id='debugs'></div>
|
|
<div id='debug'></div>
|
|
|
|
<script>
|
|
Gun.TESTING = true;
|
|
try{localStorage.clear()}catch(e){}
|
|
indexedDB.deleteDatabase('radatatest');
|
|
|
|
var opt = {localStorage: false};
|
|
//opt.store = RindexedDB(opt);
|
|
var gun = Gun(opt);
|
|
</script>
|
|
<script>
|
|
wait.onchange = function(){ spam.wait = this.value }
|
|
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 = 100000; spam.left = spam.max; spam.wait = 1; spam.burst = 100; spam.c = 0; spam.s = (+new Date);
|
|
spam.max = 1000000; spam.left = spam.max; spam.wait = 1; spam.burst = 250; 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);
|
|
var to = setInterval(function(){ var b = spam.burst;
|
|
if(spam.c >= spam.max){ clearTimeout(to); return; }
|
|
if(!b){ b = burst = 1 }
|
|
while(b--){ go(++spam.c) }
|
|
function go(i){ var d = 0;
|
|
//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};
|
|
var ref = gun.get(i).put({test: i}, function(ack){
|
|
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.');
|
|
document.body.style.backgroundColor = 'lime';
|
|
});
|
|
}
|
|
},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';
|
|
debugs.innerText = status;
|
|
}, 500);
|
|
}
|
|
</script>
|
|
<script>
|
|
;(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;
|
|
}());
|
|
</script>
|
|
<script>
|
|
;(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;
|
|
}());
|
|
</script>
|
|
</body>
|
|
</html> |