Simplify and improve transaction benchmarks
We can use `deserialize_hex` when outside of the actual benchmark code to simplify the functions. Also add an additional test that benchmarks `deserialize_hex`.
This commit is contained in:
parent
b4326f0806
commit
37035e20e8
|
@ -1966,20 +1966,17 @@ mod tests {
|
||||||
|
|
||||||
#[cfg(bench)]
|
#[cfg(bench)]
|
||||||
mod benches {
|
mod benches {
|
||||||
use hex::test_hex_unwrap as hex;
|
|
||||||
use io::sink;
|
use io::sink;
|
||||||
use test::{black_box, Bencher};
|
use test::{black_box, Bencher};
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::consensus::{deserialize, Encodable};
|
use crate::consensus::{encode, Encodable};
|
||||||
|
|
||||||
const SOME_TX: &str = "0100000001a15d57094aa7a21a28cb20b59aab8fc7d1149a3bdbcddba9c622e4f5f6a99ece010000006c493046022100f93bb0e7d8db7bd46e40132d1f8242026e045f03a0efe71bbb8e3f475e970d790221009337cd7f1f929f00cc6ff01f03729b069a7c21b59b1736ddfee5db5946c5da8c0121033b9b137ee87d5a812d6f506efdd37f0affa7ffc310711c06c7f3e097c9447c52ffffffff0100e1f505000000001976a9140389035a9225b3839e2bbf32d826a1e222031fd888ac00000000";
|
const SOME_TX: &str = "0100000001a15d57094aa7a21a28cb20b59aab8fc7d1149a3bdbcddba9c622e4f5f6a99ece010000006c493046022100f93bb0e7d8db7bd46e40132d1f8242026e045f03a0efe71bbb8e3f475e970d790221009337cd7f1f929f00cc6ff01f03729b069a7c21b59b1736ddfee5db5946c5da8c0121033b9b137ee87d5a812d6f506efdd37f0affa7ffc310711c06c7f3e097c9447c52ffffffff0100e1f505000000001976a9140389035a9225b3839e2bbf32d826a1e222031fd888ac00000000";
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
pub fn bench_transaction_size(bh: &mut Bencher) {
|
pub fn bench_transaction_size(bh: &mut Bencher) {
|
||||||
let raw_tx = hex!(SOME_TX);
|
let mut tx: Transaction = encode::deserialize_hex(SOME_TX).unwrap();
|
||||||
|
|
||||||
let mut tx: Transaction = deserialize(&raw_tx).unwrap();
|
|
||||||
|
|
||||||
bh.iter(|| {
|
bh.iter(|| {
|
||||||
black_box(black_box(&mut tx).total_size());
|
black_box(black_box(&mut tx).total_size());
|
||||||
|
@ -1988,10 +1985,8 @@ mod benches {
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
pub fn bench_transaction_serialize(bh: &mut Bencher) {
|
pub fn bench_transaction_serialize(bh: &mut Bencher) {
|
||||||
let raw_tx = hex!(SOME_TX);
|
let tx: Transaction = encode::deserialize_hex(SOME_TX).unwrap();
|
||||||
let tx: Transaction = deserialize(&raw_tx).unwrap();
|
let mut data = Vec::with_capacity(SOME_TX.len());
|
||||||
|
|
||||||
let mut data = Vec::with_capacity(raw_tx.len());
|
|
||||||
|
|
||||||
bh.iter(|| {
|
bh.iter(|| {
|
||||||
let result = tx.consensus_encode(&mut data);
|
let result = tx.consensus_encode(&mut data);
|
||||||
|
@ -2002,8 +1997,7 @@ mod benches {
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
pub fn bench_transaction_serialize_logic(bh: &mut Bencher) {
|
pub fn bench_transaction_serialize_logic(bh: &mut Bencher) {
|
||||||
let raw_tx = hex!(SOME_TX);
|
let tx: Transaction = encode::deserialize_hex(SOME_TX).unwrap();
|
||||||
let tx: Transaction = deserialize(&raw_tx).unwrap();
|
|
||||||
|
|
||||||
bh.iter(|| {
|
bh.iter(|| {
|
||||||
let size = tx.consensus_encode(&mut sink());
|
let size = tx.consensus_encode(&mut sink());
|
||||||
|
@ -2013,10 +2007,18 @@ mod benches {
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
pub fn bench_transaction_deserialize(bh: &mut Bencher) {
|
pub fn bench_transaction_deserialize(bh: &mut Bencher) {
|
||||||
let raw_tx = hex!(SOME_TX);
|
let raw_tx = <Vec<u8> as hex::FromHex>::from_hex(SOME_TX).unwrap();
|
||||||
|
|
||||||
bh.iter(|| {
|
bh.iter(|| {
|
||||||
let tx: Transaction = deserialize(&raw_tx).unwrap();
|
let tx: Transaction = encode::deserialize(&raw_tx).unwrap();
|
||||||
|
black_box(&tx);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
#[bench]
|
||||||
|
pub fn bench_transaction_deserialize_hex(bh: &mut Bencher) {
|
||||||
|
bh.iter(|| {
|
||||||
|
let tx: Transaction = encode::deserialize_hex(SOME_TX).unwrap();
|
||||||
black_box(&tx);
|
black_box(&tx);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue