bench: walletdb benchmark.

This commit is contained in:
Christopher Jeffrey 2016-10-20 11:38:32 -07:00
parent 47c6da514d
commit 9dfe86e612
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD

View File

@ -8,27 +8,31 @@ var assert = require('assert');
var scriptTypes = constants.scriptTypes; var scriptTypes = constants.scriptTypes;
var bench = require('./bench'); var bench = require('./bench');
var co = require('../lib/utils/co'); var co = require('../lib/utils/co');
var crypto = require('../lib/crypto/crypto');
bcoin.cache(); bcoin.cache();
var dummyInput = { function dummy() {
prevout: { var hash = crypto.randomBytes(32).toString('hex');
hash: constants.NULL_HASH, return {
index: 0 prevout: {
}, hash: hash,
coin: { index: 0
version: 1, },
height: 0, coin: {
value: 50460 * 4, version: 1,
script: new bcoin.script([]), height: 0,
coinbase: false, value: 50460 * 4,
hash: constants.NULL_HASH, script: new bcoin.script(),
index: 0 coinbase: false,
}, hash: hash,
script: new bcoin.script([]), index: 0
witness: new bcoin.witness([]), },
sequence: 0xffffffff script: new bcoin.script(),
}; witness: new bcoin.witness(),
sequence: 0xffffffff
};
}
var walletdb = new bcoin.walletdb({ var walletdb = new bcoin.walletdb({
name: 'wallet-test', name: 'wallet-test',
@ -41,7 +45,7 @@ var walletdb = new bcoin.walletdb({
var runBench = co(function* runBench() { var runBench = co(function* runBench() {
var i, j, wallet, addrs, jobs, end; var i, j, wallet, addrs, jobs, end;
var result, nonce, tx, options; var result, tx, options;
// Open and Create // Open and Create
yield walletdb.open(); yield walletdb.open();
@ -74,25 +78,42 @@ var runBench = co(function* runBench() {
for (i = 0; i < result.length; i++) for (i = 0; i < result.length; i++)
addrs.push(result[i].getAddress()); addrs.push(result[i].getAddress());
// TX // TX deposit
jobs = []; jobs = [];
nonce = new BN(0);
for (i = 0; i < 10000; i++) { for (i = 0; i < 10000; i++) {
tx = bcoin.mtx() tx = bcoin.mtx()
.addInput(dummy())
.addOutput(addrs[(i + 0) % addrs.length], 50460) .addOutput(addrs[(i + 0) % addrs.length], 50460)
.addOutput(addrs[(i + 1) % addrs.length], 50460) .addOutput(addrs[(i + 1) % addrs.length], 50460)
.addOutput(addrs[(i + 2) % addrs.length], 50460) .addOutput(addrs[(i + 2) % addrs.length], 50460)
.addOutput(addrs[(i + 3) % addrs.length], 50460); .addOutput(addrs[(i + 3) % addrs.length], 50460)
.toTX();
tx.addInput(dummyInput); jobs.push(walletdb.addTX(tx));
nonce.addn(1);
tx.inputs[0].script.set(0, nonce);
tx.inputs[0].script.compile();
jobs.push(walletdb.addTX(tx.toTX()));
} }
end = bench('tx'); end = bench('deposit');
result = yield Promise.all(jobs);
end(10000);
// TX redemption
jobs = [];
for (i = 0; i < 10000; i++) {
tx = bcoin.mtx()
.addInput(tx, 0)
.addInput(tx, 1)
.addInput(tx, 2)
.addInput(tx, 3)
.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)
.toTX();
jobs.push(walletdb.addTX(tx));
}
end = bench('redemption');
result = yield Promise.all(jobs); result = yield Promise.all(jobs);
end(10000); end(10000);