You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.7 KiB
63 lines
1.7 KiB
'use strict';
|
|
|
|
var benchmark = require('benchmark');
|
|
var bitcore = require('..');
|
|
var bitcoinjs = require('bitcoinjs-lib');
|
|
var bcoin = require('bcoin');
|
|
var async = require('async');
|
|
var fullnode = require('fullnode');
|
|
var blockData = require('./block-357238.json');
|
|
|
|
var maxTime = 20;
|
|
|
|
console.log('Benchmarking Block/Transaction Serialization');
|
|
console.log('---------------------------------------');
|
|
|
|
async.series([
|
|
function(next) {
|
|
|
|
var block1;
|
|
var block2;
|
|
var block3;
|
|
|
|
function bitcoreTest() {
|
|
block1 = bitcore.Block.fromString(blockData);
|
|
}
|
|
|
|
function bitcoinJSTest() {
|
|
block2 = bitcoinjs.Block.fromHex(blockData);
|
|
}
|
|
|
|
var parser = new bcoin.protocol.parser();
|
|
|
|
function bcoinTest() {
|
|
var raw = bcoin.utils.toArray(blockData, 'hex');
|
|
var data = parser.parseBlock(raw);
|
|
block3 = new bcoin.block(data, 'block');
|
|
}
|
|
|
|
var blockDataMessage = '0000000000000000' + blockData; // add mock leading magic and size
|
|
|
|
function fullnodeTest() {
|
|
fullnode.Block().fromHex(blockDataMessage);
|
|
}
|
|
|
|
var suite = new benchmark.Suite();
|
|
suite.add('bitcore', bitcoreTest, {maxTime: maxTime});
|
|
suite.add('bitcoinjs', bitcoinJSTest, {maxTime: maxTime});
|
|
suite.add('bcoin', bcoinTest, {maxTime: maxTime});
|
|
suite.add('fullnode', fullnodeTest, {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');
|
|
});
|
|
|