bitcore-node-zcash/benchmarks/index.js

94 lines
2.7 KiB
JavaScript
Raw Normal View History

'use strict'
var assert = require('assert');
var benchmark = require('benchmark');
var bitcoinconsensus = require('../');
var bitcoin = require('bitcoin');
var async = require('async');
var maxTime = 10;
console.log('Benchmarking Bitcoind.js native interface versus Bitcoind JSON RPC interface');
console.log('----------------------------------------------------------------------');
// The primary methods needed are:
// getInfo === works
// getRawTransactioni === getrawtransaction "txid" ( verbose )
// sendRawTransaction === sendrawtransaction "hexstring" ( allowhighfees )
// getTransaction === either I need txindex turned on -or- the wallet turned on
// Wallet functionality isn't needed, and libbitcoind.so could be compiled with the --disable-wallet flag.
var fixtureData = {
transactions: [
'5523b432c1bd6c101bee704ad6c560fd09aefc483f8a4998df6741feaa74e6eb',
'ff48393e7731507c789cfa9cbfae045b10e023ce34ace699a63cdad88c8b43f8',
'5d35c5eebf704877badd0a131b0a86588041997d40dbee8ccff21ca5b7e5e333',
'88842f2cf9d8659c3434f6bc0c515e22d87f33e864e504d2d7117163a572a3aa',
]
}
var bitcoind = require('../')({
directory: '~/.libbitcoind-example'
});
bitcoind.on('error', function(err) {
bitcoind.log('error="%s"', err.message);
});
bitcoind.on('open', function(status) {
bitcoind.log('status="%s"', status);
var client = new bitcoin.Client({
host: 'localhost',
port: 18332,
user: 'bitpaytest',
pass: 'local321'
});
async.series([
function(next) {
function bitcoindJsonRpc() {
client.getInfo();
// var item = Math.floor((Math.random() * fixtures.length));
// var data = fixtureData.transactions[item];
//
// client.getTransaction(data, function(err, tx) {
// assert.equal(err, null);
// });
}
function bitcoindNative() {
bitcoind.getInfo();
// var item = Math.floor((Math.random() * fixtures.length));
// var data = fixtureData.transaction[item];
//
// bitcoind.getTransaction(data, function(err, tx) {
// assert.equal(err, null);
// });
}
var suite = new benchmark.Suite();
suite.add('bitcoind json rpc', bitcoindJsonRpc, { maxTime: maxTime });
suite.add('bitcoind native', bitcoindNative, { maxTime: maxTime });
suite
.on('cycle', function(event) {
console.log(String(event.target));
})
.on('complete', function() {
console.log('Fastest is ' + this.filter('fastest').pluck('name'));
console.log('----------------------------------------------------------------------');
next();
})
.run();
}
], function(err) {
console.log('Finished');
bitcoind.stop();
process.exit();
});
});