From 28f6fbee23c115b048cba96b9b61eb860b7a5645 Mon Sep 17 00:00:00 2001 From: Greg Fitzgerald Date: Tue, 10 Jul 2018 21:25:27 -0600 Subject: [PATCH] Port all benchmarks to Criterion --- Cargo.toml | 4 ++++ benches/banking_stage.rs | 36 +++++++++++++++++------------------- benches/ledger.rs | 17 ++++++++++++----- benches/signature.rs | 16 ++++++++++++---- benches/streamer.rs | 23 ++++++++++++++++------- 5 files changed, 61 insertions(+), 35 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index d6b0866c09..84b7444dcc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -91,12 +91,16 @@ harness = false [[bench]] name = "banking_stage" +harness = false [[bench]] name = "ledger" +harness = false [[bench]] name = "signature" +harness = false [[bench]] name = "streamer" +harness = false diff --git a/benches/banking_stage.rs b/benches/banking_stage.rs index dfef971ec3..991a8535fe 100644 --- a/benches/banking_stage.rs +++ b/benches/banking_stage.rs @@ -1,16 +1,13 @@ -#![feature(test)] - extern crate bincode; +#[macro_use] +extern crate criterion; extern crate rayon; extern crate solana; -extern crate test; -#[macro_use] -extern crate log; +use criterion::{Bencher, Criterion}; use rayon::prelude::*; use solana::bank::Bank; use solana::banking_stage::BankingStage; -use solana::logger; use solana::mint::Mint; use solana::packet::{to_packets_chunked, PacketRecycler}; use solana::record_stage::Signal; @@ -19,9 +16,7 @@ use solana::transaction::Transaction; use std::iter; use std::sync::mpsc::{channel, Receiver}; use std::sync::Arc; -use test::Bencher; -// extern crate test; // use self::test::Bencher; // use bank::{Bank, MAX_ENTRY_IDS}; // use bincode::serialize; @@ -33,7 +28,6 @@ use test::Bencher; // use std::time::Instant; // use transaction::Transaction; // -// #[bench] // fn bench_process_transactions(_bencher: &mut Bencher) { // let mint = Mint::new(100_000_000); // let bank = Bank::new(&mint); @@ -98,10 +92,8 @@ fn check_txs(batches: usize, receiver: &Receiver, ref_tx_count: usize) { assert_eq!(total, ref_tx_count); } -#[bench] fn bench_banking_stage_multi_accounts(bencher: &mut Bencher) { - logger::setup(); - let tx = 10_000_usize; + let tx = 1_000_usize; let mint_total = 1_000_000_000_000; let mint = Mint::new(mint_total); let num_dst_accounts = 8 * 1024; @@ -112,8 +104,6 @@ fn bench_banking_stage_multi_accounts(bencher: &mut Bencher) { .map(|_| KeyPair::new().pubkey()) .collect(); - info!("created keys src: {} dst: {}", srckeys.len(), dstkeys.len()); - let transactions: Vec<_> = (0..tx) .map(|i| { Transaction::new( @@ -125,8 +115,6 @@ fn bench_banking_stage_multi_accounts(bencher: &mut Bencher) { }) .collect(); - info!("created transactions"); - let (verified_sender, verified_receiver) = channel(); let (signal_sender, signal_receiver) = channel(); let packet_recycler = PacketRecycler::default(); @@ -186,10 +174,8 @@ fn bench_banking_stage_multi_accounts(bencher: &mut Bencher) { }); } -#[bench] fn bench_banking_stage_single_from(bencher: &mut Bencher) { - logger::setup(); - let tx = 10_000_usize; + let tx = 1_000_usize; let mint = Mint::new(1_000_000_000_000); let mut pubkeys = Vec::new(); let num_keys = 8; @@ -234,3 +220,15 @@ fn bench_banking_stage_single_from(bencher: &mut Bencher) { check_txs(verified_len, &signal_receiver, tx); }); } + +fn bench(criterion: &mut Criterion) { + criterion.bench_function("bench_banking_stage_multi_accounts", |bencher| { + bench_banking_stage_multi_accounts(bencher); + }); + criterion.bench_function("bench_process_transaction", |bencher| { + bench_banking_stage_single_from(bencher); + }); +} + +criterion_group!(benches, bench); +criterion_main!(benches); diff --git a/benches/ledger.rs b/benches/ledger.rs index 0126764b11..34aa36f7c5 100644 --- a/benches/ledger.rs +++ b/benches/ledger.rs @@ -1,17 +1,15 @@ -#![feature(test)] - +#[macro_use] +extern crate criterion; extern crate solana; -extern crate test; +use criterion::{Bencher, Criterion}; use solana::hash::{hash, Hash}; use solana::ledger::{next_entries, reconstruct_entries_from_blobs, Block}; use solana::packet::BlobRecycler; use solana::signature::{KeyPair, KeyPairUtil}; use solana::transaction::Transaction; use std::collections::VecDeque; -use test::Bencher; -#[bench] fn bench_block_to_blobs_to_block(bencher: &mut Bencher) { let zero = Hash::default(); let one = hash(&zero); @@ -27,3 +25,12 @@ fn bench_block_to_blobs_to_block(bencher: &mut Bencher) { assert_eq!(reconstruct_entries_from_blobs(blob_q).unwrap(), entries); }); } + +fn bench(criterion: &mut Criterion) { + criterion.bench_function("bench_block_to_blobs_to_block", |bencher| { + bench_block_to_blobs_to_block(bencher); + }); +} + +criterion_group!(benches, bench); +criterion_main!(benches); diff --git a/benches/signature.rs b/benches/signature.rs index 2e989be3d5..f559287b5f 100644 --- a/benches/signature.rs +++ b/benches/signature.rs @@ -1,12 +1,20 @@ -#![feature(test)] +#[macro_use] +extern crate criterion; extern crate solana; -extern crate test; +use criterion::{Bencher, Criterion}; use solana::signature::GenKeys; -use test::Bencher; -#[bench] fn bench_gen_keys(b: &mut Bencher) { let rnd = GenKeys::new([0u8; 32]); b.iter(|| rnd.gen_n_keypairs(1000)); } + +fn bench(criterion: &mut Criterion) { + criterion.bench_function("bench_gen_keys", |bencher| { + bench_gen_keys(bencher); + }); +} + +criterion_group!(benches, bench); +criterion_main!(benches); diff --git a/benches/streamer.rs b/benches/streamer.rs index 4e003b19e6..a514adb90a 100644 --- a/benches/streamer.rs +++ b/benches/streamer.rs @@ -1,10 +1,10 @@ -#![feature(test)] - #[macro_use] extern crate log; extern crate solana; -extern crate test; +#[macro_use] +extern crate criterion; +use criterion::{Bencher, Criterion}; use solana::packet::{Packet, PacketRecycler, BLOB_SIZE, PACKET_DATA_SIZE}; use solana::result::Result; use solana::streamer::{receiver, PacketReceiver}; @@ -16,7 +16,6 @@ use std::thread::sleep; use std::thread::{spawn, JoinHandle}; use std::time::Duration; use std::time::SystemTime; -use test::Bencher; fn producer(addr: &SocketAddr, recycler: PacketRecycler, exit: Arc) -> JoinHandle<()> { let send = UdpSocket::bind("0.0.0.0:0").unwrap(); @@ -98,7 +97,17 @@ fn bench_streamer_with_result() -> Result<()> { Ok(()) } -#[bench] -fn bench_streamer(_bench: &mut Bencher) { - bench_streamer_with_result().unwrap(); +fn bench_streamer(bencher: &mut Bencher) { + bencher.iter(|| { + bench_streamer_with_result().unwrap(); + }); } + +fn bench(criterion: &mut Criterion) { + criterion.bench_function("bench_streamer", |bencher| { + bench_streamer(bencher); + }); +} + +criterion_group!(benches, bench); +criterion_main!(benches);