add benchmarks.
This commit is contained in:
parent
682596fb05
commit
5a56412d51
13
bench/bench.js
Normal file
13
bench/bench.js
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
module.exports = function bench(name) {
|
||||||
|
var start = process.hrtime();
|
||||||
|
return function end(ops) {
|
||||||
|
var elapsed = process.hrtime(start);
|
||||||
|
var time = elapsed[0] + elapsed[1] / 1e9;
|
||||||
|
var rate = ops / time;
|
||||||
|
|
||||||
|
console.log('%s: ops=%d, time=%d, rate=%s',
|
||||||
|
name, ops, time, rate.toFixed(5));
|
||||||
|
};
|
||||||
|
};
|
||||||
132
bench/walletdb.js
Normal file
132
bench/walletdb.js
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var bn = require('bn.js');
|
||||||
|
var bcoin = require('../').set('main');
|
||||||
|
var constants = bcoin.protocol.constants;
|
||||||
|
var network = bcoin.protocol.network;
|
||||||
|
var utils = bcoin.utils;
|
||||||
|
var assert = require('assert');
|
||||||
|
var scriptTypes = constants.scriptTypes;
|
||||||
|
var bench = require('./bench');
|
||||||
|
|
||||||
|
var dummyInput = {
|
||||||
|
prevout: {
|
||||||
|
hash: constants.NULL_HASH,
|
||||||
|
index: 0
|
||||||
|
},
|
||||||
|
coin: {
|
||||||
|
version: 1,
|
||||||
|
height: 0,
|
||||||
|
value: 50460 * 4,
|
||||||
|
script: new bcoin.script([]),
|
||||||
|
coinbase: false,
|
||||||
|
hash: constants.NULL_HASH,
|
||||||
|
index: 0
|
||||||
|
},
|
||||||
|
script: new bcoin.script([]),
|
||||||
|
witness: new bcoin.witness([]),
|
||||||
|
sequence: 0xffffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
var walletdb = new bcoin.walletdb({
|
||||||
|
name: 'wallet-test',
|
||||||
|
// location: __dirname + '/../walletdb-bench',
|
||||||
|
// db: 'leveldb'
|
||||||
|
db: 'memory'
|
||||||
|
});
|
||||||
|
var wallet;
|
||||||
|
var addrs = [];
|
||||||
|
|
||||||
|
function runBench(callback) {
|
||||||
|
utils.serial([
|
||||||
|
function(next) {
|
||||||
|
walletdb.create(function(err, w) {
|
||||||
|
assert.ifError(err);
|
||||||
|
wallet = w;
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
function(next) {
|
||||||
|
var end = bench('accounts');
|
||||||
|
utils.forRange(0, 5000, function(i, next) {
|
||||||
|
wallet.createAccount({}, function(err, account) {
|
||||||
|
assert.ifError(err);
|
||||||
|
addrs.push(account.receiveAddress.getAddress());
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
}, function(err) {
|
||||||
|
assert.ifError(err);
|
||||||
|
end(1000);
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
function(next) {
|
||||||
|
var nonce = new bn(0);
|
||||||
|
var end;
|
||||||
|
utils.forRange(0, 100000, function(i, next) {
|
||||||
|
var t1 = bcoin.mtx()
|
||||||
|
.addOutput(addrs[(i + 0) % addrs.length], 50460)
|
||||||
|
.addOutput(addrs[(i + 1) % addrs.length], 50460)
|
||||||
|
.addOutput(addrs[(i + 2) % addrs.length], 50460)
|
||||||
|
.addOutput(addrs[(i + 3) % addrs.length], 50460);
|
||||||
|
|
||||||
|
t1.addInput(dummyInput);
|
||||||
|
nonce.addn(1);
|
||||||
|
t1.inputs[0].script.set(0, nonce);
|
||||||
|
t1.inputs[0].script.compile();
|
||||||
|
|
||||||
|
walletdb.addTX(t1.toTX(), function(err) {
|
||||||
|
assert.ifError(err);
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
}, function(err) {
|
||||||
|
assert.ifError(err);
|
||||||
|
end(10000);
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
end = bench('tx');
|
||||||
|
},
|
||||||
|
function(next) {
|
||||||
|
var end = bench('balance');
|
||||||
|
wallet.getBalance(function(err, balance) {
|
||||||
|
assert.ifError(err);
|
||||||
|
end(1);
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
function(next) {
|
||||||
|
var end = bench('coins');
|
||||||
|
wallet.getCoins(function(err) {
|
||||||
|
assert.ifError(err);
|
||||||
|
end(1);
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
function(next) {
|
||||||
|
var end = bench('create');
|
||||||
|
var options = {
|
||||||
|
rate: 10000,
|
||||||
|
outputs: [{
|
||||||
|
value: 50460,
|
||||||
|
address: addrs[0]
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
wallet.createTX(options, function(err) {
|
||||||
|
assert.ifError(err);
|
||||||
|
end(1);
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
], function(err) {
|
||||||
|
assert.ifError(err);
|
||||||
|
callback();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
walletdb.open(function(err) {
|
||||||
|
assert.ifError(err);
|
||||||
|
runBench(function(err) {
|
||||||
|
assert.ifError(err);
|
||||||
|
process.exit(0);
|
||||||
|
});
|
||||||
|
});
|
||||||
Loading…
Reference in New Issue
Block a user