* address warnings from 'rustup run beta cargo clippy --workspace' minor refactoring in: - cli/src/cli.rs - cli/src/offline/blockhash_query.rs - logger/src/lib.rs - runtime/src/accounts_db.rs expect some performance improvement AccountsDB::clean_accounts() * address warnings from 'rustup run beta cargo clippy --workspace --tests' * address warnings from 'rustup run nightly cargo clippy --workspace --all-targets' * rustfmt * fix warning stragglers * properly fix clippy warnings test_vote_subscribe() replace ref-to-arc with ref parameters where arc not cloned * Remove lock around JsonRpcRequestProcessor (#10417) automerge * make ancestors parameter optional to avoid forcing construction of empty hash maps Co-authored-by: Greg Fitzgerald <greg@solana.com>
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
#![feature(test)]
 | 
						|
 | 
						|
extern crate test;
 | 
						|
 | 
						|
use rand::{thread_rng, Rng};
 | 
						|
use solana_core::broadcast_stage::broadcast_metrics::TransmitShredsStats;
 | 
						|
use solana_core::broadcast_stage::{broadcast_shreds, get_broadcast_peers};
 | 
						|
use solana_core::cluster_info::{ClusterInfo, Node};
 | 
						|
use solana_core::contact_info::ContactInfo;
 | 
						|
use solana_ledger::shred::Shred;
 | 
						|
use solana_sdk::pubkey::Pubkey;
 | 
						|
use solana_sdk::timing::timestamp;
 | 
						|
use std::{
 | 
						|
    collections::HashMap,
 | 
						|
    net::UdpSocket,
 | 
						|
    sync::{atomic::AtomicU64, Arc},
 | 
						|
};
 | 
						|
use test::Bencher;
 | 
						|
 | 
						|
#[bench]
 | 
						|
fn broadcast_shreds_bench(bencher: &mut Bencher) {
 | 
						|
    solana_logger::setup();
 | 
						|
    let leader_pubkey = Pubkey::new_rand();
 | 
						|
    let leader_info = Node::new_localhost_with_pubkey(&leader_pubkey);
 | 
						|
    let cluster_info = ClusterInfo::new_with_invalid_keypair(leader_info.info);
 | 
						|
    let socket = UdpSocket::bind("0.0.0.0:0").unwrap();
 | 
						|
 | 
						|
    const NUM_SHREDS: usize = 32;
 | 
						|
    let shreds = vec![Shred::new_empty_data_shred(); NUM_SHREDS];
 | 
						|
    let mut stakes = HashMap::new();
 | 
						|
    const NUM_PEERS: usize = 200;
 | 
						|
    for _ in 0..NUM_PEERS {
 | 
						|
        let id = Pubkey::new_rand();
 | 
						|
        let contact_info = ContactInfo::new_localhost(&id, timestamp());
 | 
						|
        cluster_info.insert_info(contact_info);
 | 
						|
        stakes.insert(id, thread_rng().gen_range(1, NUM_PEERS) as u64);
 | 
						|
    }
 | 
						|
    let stakes = Arc::new(stakes);
 | 
						|
    let cluster_info = Arc::new(cluster_info);
 | 
						|
    let (peers, peers_and_stakes) = get_broadcast_peers(&cluster_info, Some(stakes));
 | 
						|
    let shreds = Arc::new(shreds);
 | 
						|
    let last_datapoint = Arc::new(AtomicU64::new(0));
 | 
						|
    bencher.iter(move || {
 | 
						|
        let shreds = shreds.clone();
 | 
						|
        broadcast_shreds(
 | 
						|
            &socket,
 | 
						|
            &shreds,
 | 
						|
            &peers_and_stakes,
 | 
						|
            &peers,
 | 
						|
            &last_datapoint,
 | 
						|
            &mut TransmitShredsStats::default(),
 | 
						|
        )
 | 
						|
        .unwrap();
 | 
						|
    });
 | 
						|
}
 |