From 14d624ee409747985f09cc1542ac7f2fbcd46bc4 Mon Sep 17 00:00:00 2001 From: Greg Fitzgerald Date: Mon, 25 Jun 2018 19:31:42 -0600 Subject: [PATCH] Fix benchmarks too This change will make these benchmarks way slower, because its now cloning the transaction vector each iteration instead of the ref counts. We need to rethink these. --- src/banking_stage.rs | 61 ++++++++++++++++++++++++-------------------- src/streamer.rs | 3 +-- 2 files changed, 34 insertions(+), 30 deletions(-) diff --git a/src/banking_stage.rs b/src/banking_stage.rs index 223d201732..9b40bffee6 100644 --- a/src/banking_stage.rs +++ b/src/banking_stage.rs @@ -327,13 +327,6 @@ mod bench { let (verified_sender, verified_receiver) = channel(); let (signal_sender, signal_receiver) = channel(); let packet_recycler = PacketRecycler::default(); - let verified: Vec<_> = to_packets_chunked(&packet_recycler, transactions, 192) - .into_iter() - .map(|x| { - let len = (*x).read().unwrap().packets.len(); - (x, iter::repeat(1).take(len).collect()) - }) - .collect(); let setup_transactions: Vec<_> = (0..num_src_accounts) .map(|i| { @@ -346,18 +339,20 @@ mod bench { }) .collect(); - let verified_setup: Vec<_> = to_packets_chunked(&packet_recycler, setup_transactions, tx) - .into_iter() - .map(|x| { - let len = (*x).read().unwrap().packets.len(); - (x, iter::repeat(1).take(len).collect()) - }) - .collect(); - bencher.iter(move || { let bank = Arc::new(Bank::new(&mint)); - verified_sender.send(verified_setup.clone()).unwrap(); + let verified_setup: Vec<_> = + to_packets_chunked(&packet_recycler, setup_transactions.clone(), tx) + .into_iter() + .map(|x| { + let len = (*x).read().unwrap().packets.len(); + (x, iter::repeat(1).take(len).collect()) + }) + .collect(); + + let verified_setup_len = verified_setup.len(); + verified_sender.send(verified_setup).unwrap(); BankingStage::process_packets( bank.clone(), &verified_receiver, @@ -365,9 +360,18 @@ mod bench { &packet_recycler, ).unwrap(); - check_txs(verified_setup.len(), &signal_receiver, num_src_accounts); + check_txs(verified_setup_len, &signal_receiver, num_src_accounts); - verified_sender.send(verified.clone()).unwrap(); + let verified: Vec<_> = to_packets_chunked(&packet_recycler, transactions.clone(), 192) + .into_iter() + .map(|x| { + let len = (*x).read().unwrap().packets.len(); + (x, iter::repeat(1).take(len).collect()) + }) + .collect(); + + let verified_len = verified.len(); + verified_sender.send(verified).unwrap(); BankingStage::process_packets( bank.clone(), &verified_receiver, @@ -375,7 +379,7 @@ mod bench { &packet_recycler, ).unwrap(); - check_txs(verified.len(), &signal_receiver, tx); + check_txs(verified_len, &signal_receiver, tx); }); } @@ -405,17 +409,18 @@ mod bench { let (verified_sender, verified_receiver) = channel(); let (signal_sender, signal_receiver) = channel(); let packet_recycler = PacketRecycler::default(); - let verified: Vec<_> = to_packets_chunked(&packet_recycler, transactions, tx) - .into_iter() - .map(|x| { - let len = (*x).read().unwrap().packets.len(); - (x, iter::repeat(1).take(len).collect()) - }) - .collect(); bencher.iter(move || { let bank = Arc::new(Bank::new(&mint)); - verified_sender.send(verified.clone()).unwrap(); + let verified: Vec<_> = to_packets_chunked(&packet_recycler, transactions.clone(), tx) + .into_iter() + .map(|x| { + let len = (*x).read().unwrap().packets.len(); + (x, iter::repeat(1).take(len).collect()) + }) + .collect(); + let verified_len = verified.len(); + verified_sender.send(verified).unwrap(); BankingStage::process_packets( bank.clone(), &verified_receiver, @@ -423,7 +428,7 @@ mod bench { &packet_recycler, ).unwrap(); - check_txs(verified.len(), &signal_receiver, tx); + check_txs(verified_len, &signal_receiver, tx); }); } diff --git a/src/streamer.rs b/src/streamer.rs index b6654905c9..aa3f7d802b 100644 --- a/src/streamer.rs +++ b/src/streamer.rs @@ -660,9 +660,8 @@ mod bench { let timer = Duration::new(1, 0); match r.recv_timeout(timer) { Ok(msgs) => { - let msgs_ = msgs.clone(); *rvs.lock().unwrap() += msgs.read().unwrap().packets.len(); - recycler.recycle(msgs_); + recycler.recycle(msgs); } _ => (), }