|
|
@@ -1,8 +1,7 @@
|
|
|
-#![feature(test)]
|
|
|
-
|
|
|
-extern crate test;
|
|
|
+#![allow(clippy::arithmetic_side_effects)]
|
|
|
|
|
|
use {
|
|
|
+ bencher::{benchmark_group, benchmark_main, Bencher},
|
|
|
log::*,
|
|
|
rand::{thread_rng, Rng},
|
|
|
solana_perf::{
|
|
|
@@ -11,7 +10,6 @@ use {
|
|
|
sigverify,
|
|
|
test_tx::{test_multisig_tx, test_tx},
|
|
|
},
|
|
|
- test::Bencher,
|
|
|
};
|
|
|
|
|
|
#[cfg(not(any(target_env = "msvc", target_os = "freebsd")))]
|
|
|
@@ -21,8 +19,7 @@ static GLOBAL: jemallocator::Jemalloc = jemallocator::Jemalloc;
|
|
|
const NUM: usize = 256;
|
|
|
const LARGE_BATCH_PACKET_COUNT: usize = 128;
|
|
|
|
|
|
-#[bench]
|
|
|
-fn bench_sigverify_simple(bencher: &mut Bencher) {
|
|
|
+fn bench_sigverify_simple(b: &mut Bencher) {
|
|
|
let tx = test_tx();
|
|
|
let num_packets = NUM;
|
|
|
|
|
|
@@ -35,7 +32,7 @@ fn bench_sigverify_simple(bencher: &mut Bencher) {
|
|
|
let recycler = Recycler::default();
|
|
|
let recycler_out = Recycler::default();
|
|
|
// verify packets
|
|
|
- bencher.iter(|| {
|
|
|
+ b.iter(|| {
|
|
|
sigverify::ed25519_verify(&mut batches, &recycler, &recycler_out, false, num_packets);
|
|
|
})
|
|
|
}
|
|
|
@@ -56,82 +53,68 @@ fn gen_batches(
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-#[bench]
|
|
|
-#[ignore]
|
|
|
-fn bench_sigverify_low_packets_small_batch(bencher: &mut Bencher) {
|
|
|
+fn bench_sigverify_low_packets_small_batch(b: &mut Bencher) {
|
|
|
let num_packets = sigverify::VERIFY_PACKET_CHUNK_SIZE - 1;
|
|
|
let mut batches = gen_batches(false, 1, num_packets);
|
|
|
let recycler = Recycler::default();
|
|
|
let recycler_out = Recycler::default();
|
|
|
- bencher.iter(|| {
|
|
|
+ b.iter(|| {
|
|
|
sigverify::ed25519_verify(&mut batches, &recycler, &recycler_out, false, num_packets);
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-#[bench]
|
|
|
-#[ignore]
|
|
|
-fn bench_sigverify_low_packets_large_batch(bencher: &mut Bencher) {
|
|
|
+fn bench_sigverify_low_packets_large_batch(b: &mut Bencher) {
|
|
|
let num_packets = sigverify::VERIFY_PACKET_CHUNK_SIZE - 1;
|
|
|
let mut batches = gen_batches(false, LARGE_BATCH_PACKET_COUNT, num_packets);
|
|
|
let recycler = Recycler::default();
|
|
|
let recycler_out = Recycler::default();
|
|
|
- bencher.iter(|| {
|
|
|
+ b.iter(|| {
|
|
|
sigverify::ed25519_verify(&mut batches, &recycler, &recycler_out, false, num_packets);
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-#[bench]
|
|
|
-#[ignore]
|
|
|
-fn bench_sigverify_medium_packets_small_batch(bencher: &mut Bencher) {
|
|
|
+fn bench_sigverify_medium_packets_small_batch(b: &mut Bencher) {
|
|
|
let num_packets = sigverify::VERIFY_PACKET_CHUNK_SIZE * 8;
|
|
|
let mut batches = gen_batches(false, 1, num_packets);
|
|
|
let recycler = Recycler::default();
|
|
|
let recycler_out = Recycler::default();
|
|
|
- bencher.iter(|| {
|
|
|
+ b.iter(|| {
|
|
|
sigverify::ed25519_verify(&mut batches, &recycler, &recycler_out, false, num_packets);
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-#[bench]
|
|
|
-#[ignore]
|
|
|
-fn bench_sigverify_medium_packets_large_batch(bencher: &mut Bencher) {
|
|
|
+fn bench_sigverify_medium_packets_large_batch(b: &mut Bencher) {
|
|
|
let num_packets = sigverify::VERIFY_PACKET_CHUNK_SIZE * 8;
|
|
|
let mut batches = gen_batches(false, LARGE_BATCH_PACKET_COUNT, num_packets);
|
|
|
let recycler = Recycler::default();
|
|
|
let recycler_out = Recycler::default();
|
|
|
- bencher.iter(|| {
|
|
|
+ b.iter(|| {
|
|
|
sigverify::ed25519_verify(&mut batches, &recycler, &recycler_out, false, num_packets);
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-#[bench]
|
|
|
-#[ignore]
|
|
|
-fn bench_sigverify_high_packets_small_batch(bencher: &mut Bencher) {
|
|
|
+fn bench_sigverify_high_packets_small_batch(b: &mut Bencher) {
|
|
|
let num_packets = sigverify::VERIFY_PACKET_CHUNK_SIZE * 32;
|
|
|
let mut batches = gen_batches(false, 1, num_packets);
|
|
|
let recycler = Recycler::default();
|
|
|
let recycler_out = Recycler::default();
|
|
|
- bencher.iter(|| {
|
|
|
+ b.iter(|| {
|
|
|
sigverify::ed25519_verify(&mut batches, &recycler, &recycler_out, false, num_packets);
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-#[bench]
|
|
|
-#[ignore]
|
|
|
-fn bench_sigverify_high_packets_large_batch(bencher: &mut Bencher) {
|
|
|
+fn bench_sigverify_high_packets_large_batch(b: &mut Bencher) {
|
|
|
let num_packets = sigverify::VERIFY_PACKET_CHUNK_SIZE * 32;
|
|
|
let mut batches = gen_batches(false, LARGE_BATCH_PACKET_COUNT, num_packets);
|
|
|
let recycler = Recycler::default();
|
|
|
let recycler_out = Recycler::default();
|
|
|
// verify packets
|
|
|
- bencher.iter(|| {
|
|
|
+ b.iter(|| {
|
|
|
sigverify::ed25519_verify(&mut batches, &recycler, &recycler_out, false, num_packets);
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-#[bench]
|
|
|
-#[ignore]
|
|
|
-fn bench_sigverify_uneven(bencher: &mut Bencher) {
|
|
|
+fn bench_sigverify_uneven(b: &mut Bencher) {
|
|
|
solana_logger::setup();
|
|
|
let simple_tx = test_tx();
|
|
|
let multi_tx = test_multisig_tx();
|
|
|
@@ -171,13 +154,12 @@ fn bench_sigverify_uneven(bencher: &mut Bencher) {
|
|
|
let recycler = Recycler::default();
|
|
|
let recycler_out = Recycler::default();
|
|
|
// verify packets
|
|
|
- bencher.iter(|| {
|
|
|
+ b.iter(|| {
|
|
|
sigverify::ed25519_verify(&mut batches, &recycler, &recycler_out, false, num_packets);
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-#[bench]
|
|
|
-fn bench_get_offsets(bencher: &mut Bencher) {
|
|
|
+fn bench_get_offsets(b: &mut Bencher) {
|
|
|
let tx = test_tx();
|
|
|
|
|
|
// generate packet vector
|
|
|
@@ -185,7 +167,21 @@ fn bench_get_offsets(bencher: &mut Bencher) {
|
|
|
|
|
|
let recycler = Recycler::default();
|
|
|
// verify packets
|
|
|
- bencher.iter(|| {
|
|
|
+ b.iter(|| {
|
|
|
let _ans = sigverify::generate_offsets(&mut batches, &recycler, false);
|
|
|
})
|
|
|
}
|
|
|
+
|
|
|
+benchmark_group!(
|
|
|
+ benches,
|
|
|
+ bench_get_offsets,
|
|
|
+ bench_sigverify_uneven,
|
|
|
+ bench_sigverify_high_packets_large_batch,
|
|
|
+ bench_sigverify_high_packets_small_batch,
|
|
|
+ bench_sigverify_medium_packets_large_batch,
|
|
|
+ bench_sigverify_medium_packets_small_batch,
|
|
|
+ bench_sigverify_low_packets_large_batch,
|
|
|
+ bench_sigverify_low_packets_small_batch,
|
|
|
+ bench_sigverify_simple
|
|
|
+);
|
|
|
+benchmark_main!(benches);
|