Port all benchmarks to Criterion

This commit is contained in:
Greg Fitzgerald 2018-07-10 21:25:27 -06:00 committed by Greg Fitzgerald
parent 3144a70b18
commit 28f6fbee23
5 changed files with 61 additions and 35 deletions

View File

@ -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

View File

@ -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<Signal>, 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);

View File

@ -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);

View File

@ -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);

View File

@ -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<AtomicBool>) -> 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);