diff --git a/bench/coin.js b/bench/coin.js new file mode 100644 index 00000000..6790740e --- /dev/null +++ b/bench/coin.js @@ -0,0 +1,42 @@ +'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 fs = require('fs'); + +var wtx = fs.readFileSync(__dirname + '/../test/data/wtx.hex', 'utf8'); +wtx = bcoin.tx.fromRaw(wtx.trim(), 'hex'); + +var coins = bcoin.coins.fromTX(wtx); +var raw; + +var end = bench('serialize'); +for (var i = 0; i < 10000; i++) + raw = coins.toRaw(); +end(i); + +var end = bench('parse'); +for (var i = 0; i < 10000; i++) + bcoin.coins.fromRaw(raw); +end(i); + +var end = bench('parse-single'); +var hash = wtx.hash('hex'); +for (var i = 0; i < 10000; i++) + bcoin.coins.parseCoin(raw, hash, 5); +end(i); + +var coins = bcoin.coins.fromRaw(raw); +var end = bench('get'); +var j; + +for (var i = 0; i < 10000; i++) + for (var j = 0; j < coins.outputs.length; j++) + coins.get(j); +end(i * coins.outputs.length); diff --git a/bench/tx.js b/bench/tx.js new file mode 100644 index 00000000..f209a537 --- /dev/null +++ b/bench/tx.js @@ -0,0 +1,61 @@ +'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 fs = require('fs'); + +var tx1 = parseTX('../test/data/tx3.hex'); +var tx4 = parseExtended('../test/data/tx4.hex'); +var wtx = fs.readFileSync(__dirname + '/../test/data/wtx.hex', 'utf8'); +wtx = new Buffer(wtx.trim(), 'hex'); +var tx; + +function parseTX(file) { + file = fs.readFileSync(__dirname + '/' + file, 'utf8').trim().split(/\n+/); + var tx = bcoin.tx.fromRaw(file.shift().trim(), 'hex'); + for (var i = 0; i < file.length; i++) { + var coin = bcoin.tx.fromRaw(file[i].trim(), 'hex'); + tx.fillCoins(coin); + } + return tx; +} + +function parseExtended(file) { + file = fs.readFileSync(__dirname + '/' + file, 'utf8').trim(); + return bcoin.tx.fromExtended(file, true, 'hex'); +} + +var end = bench('parse'); +for (var i = 0; i < 1000; i++) + tx = bcoin.tx.fromRaw(wtx); +end(i); + +var end = bench('serialize'); +var raw; + +for (var i = 0; i < 1000; i++) { + tx._raw = null; + raw = tx.toRaw(); +} +end(i); + +var end = bench('fee'); +for (var i = 0; i < 1000; i++) + tx.getFee(); +end(i); + +var end = bench('sanity'); +for (var i = 0; i < 1000; i++) + tx.isSane(); +end(i); + +var end = bench('verify'); +for (var i = 0; i < 3000; i++) + tx1.verify(constants.flags.VERIFY_P2SH); +end(i * tx1.inputs.length);