gun/test/old/performance.js
2018-06-18 21:33:05 -07:00

138 lines
3.8 KiB
JavaScript

describe('Performance', function(){ return; // performance tests
var console = root.console || {log: function(){}};
function perf(fn, i){
i = i || 1000;
while(--i){
fn(i);
}
}
perf.now = this.performance? function(){ return performance.now() } : function(){ return Gun.time.now()/1000 };
(function(){
var t1 = perf.now();
var obj = {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e', 6: 'f', 7: 'g', 8: 'h', 9: 'i'};
Object.keys && perf(function(){
var l = Object.keys(obj), ll = l.length, i = 0, s = '';
for(; i < ll; i++){
var v = l[i];
s += v;
}
});
console.log('map: native', (t1 = (perf.now() - t1)/1000) + 's');
var t2 = perf.now();
var obj = {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e', 6: 'f', 7: 'g', 8: 'h', 9: 'i'};
perf(function(){
var s = '';
Gun.obj.map(obj, function(v){
s += v;
})
});
console.log('map: gun', (t2 = (perf.now() - t2)/1000) + 's', (t2 / t1).toFixed(1)+'x', 'slower.');
}());
(function(){
if(!Gun.store){
var tab = Gun().tab;
if(!tab){ return }
Gun.store = tab.store;
}
root.localStorage && root.localStorage.clear();
var it = 1000;
var t1 = perf.now();
perf(function(i){
var obj = {'i': i, 'v': Gun.text.random(100)};
Gun.store.put('test/native/' + i, obj);
}, it);
console.log('store: native', (t1 = (perf.now() - t1)/1000) + 's');
root.localStorage && root.localStorage.clear();
var gun = Gun({wire: {get:function(l,cb){cb()},put:function(g,cb){
Gun.is.graph(g, function(node, soul){
Gun.store.put(soul, node);
});
cb(null);
}}});
var t2 = perf.now();
perf(function(i){
var obj = {'i': i, 'v': Gun.text.random(100)};
gun.put(obj);
}, it);
console.log('store: gun', (t2 = (perf.now() - t2)/1000) + 's', (t2 / t1).toFixed(1)+'x', 'slower.');
root.localStorage && root.localStorage.clear();
}());
(function(){ // setTimeout
if(!Gun.store){
var tab = Gun().tab;
if(!tab){ return }
Gun.store = tab.store;
}
root.localStorage && root.localStorage.clear();
var t1 = perf.now();
i = i || 1000;
while(--i){
var obj = {'i': i, 'v': Gun.text.random(100)};
Gun.store.put('test/native/' + i, obj);
}
console.log('store: native', (t1 = (perf.now() - t1)/1000) + 's');
root.localStorage && root.localStorage.clear();
var gun = Gun({wire: {get:function(l,cb){cb()},put:function(g,cb){
Gun.is.graph(g, function(node, soul){
Gun.store.put(soul, node);
});
cb(null);
}}});
var t2 = perf.now();
perf(function(i){
var obj = {'i': i, 'v': Gun.text.random(100)};
gun.put(obj);
}, it);
console.log('store: gun', (t2 = (perf.now() - t2)/1000) + 's', (t2 / t1).toFixed(1)+'x', 'slower.');
root.localStorage && root.localStorage.clear();
}());
(function(){
var t1 = perf.now();
var on = Gun.on.create(), c = 0, o = [];
perf(function(i){
o.push(function(n){
c += 1;
});
var ii = 0, l = o.length;
for(; ii < l; ii++){
o[ii](i);
}
});
console.log('on: native', (t1 = (perf.now() - t1)/1000) + 's');
var on = Gun.on.create(), c = 0;
var t2 = perf.now();
perf(function(i){
on('change').event(function(n){
c += 1;
});
on('change').emit(i);
});
console.log('on: gun', (t2 = (perf.now() - t2)/1000) + 's', (t2 / t1).toFixed(1)+'x', 'slower.');
}());return;
(function(){ // always do this last!
var t1 = perf.now();
perf(function(i){
setTimeout(function(){
if(i === 1){
cb1();
}
},0);
}); var cb1 = function(){
console.log('setTimeout: native', (t1 = (perf.now() - t1)/1000) + 's', (t1 / t2).toFixed(1)+'x', 'slower.');
}
var t2 = perf.now();
perf(function(i){
setImmediate(function(){
if(i === 1){
cb2();
}
});
}); var cb2 = function(){
console.log('setImmediate: gun', (t2 = (perf.now() - t2)/1000) + 's', (t2 / t1).toFixed(1)+'x', 'slower.');
}
}());
});