fcoin/bench/walletdb.js
Christopher Jeffrey 5a56412d51
add benchmarks.
2016-07-15 18:20:55 -07:00

133 lines
3.0 KiB
JavaScript

'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);
});
});