Skip to content

Commit 3266726

Browse files
committed
Add get_secure_random_bytes() benchmark
1 parent 828c776 commit 3266726

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

lightning/src/chain/keysinterface.rs

+35
Original file line numberDiff line numberDiff line change
@@ -1469,3 +1469,38 @@ impl PhantomKeysManager {
14691469
pub fn dyn_sign() {
14701470
let _signer: Box<dyn EcdsaChannelSigner>;
14711471
}
1472+
1473+
#[cfg(all(test, feature = "_bench_unstable", not(feature = "no-std")))]
1474+
mod benches {
1475+
use std::sync::Arc;
1476+
use std::thread;
1477+
use std::time::Duration;
1478+
use bitcoin::blockdata::constants::genesis_block;
1479+
use bitcoin::Network;
1480+
use crate::chain::keysinterface::{EntropySource, KeysManager};
1481+
1482+
use test::Bencher;
1483+
1484+
#[bench]
1485+
fn bench_get_secure_random_bytes(bench: &mut Bencher) {
1486+
let seed = [0u8; 32];
1487+
let now = Duration::from_secs(genesis_block(Network::Testnet).header.time as u64);
1488+
let keys_manager = Arc::new(KeysManager::new(&seed, now.as_secs(), now.subsec_micros()));
1489+
1490+
for _ in 1..5 {
1491+
let keys_manager_clone = Arc::clone(&keys_manager);
1492+
thread::spawn(move || {
1493+
loop {
1494+
keys_manager_clone.get_secure_random_bytes();
1495+
}
1496+
});
1497+
}
1498+
1499+
bench.iter(|| {
1500+
for _ in 1..100 {
1501+
keys_manager.get_secure_random_bytes();
1502+
}
1503+
})
1504+
}
1505+
1506+
}

0 commit comments

Comments
 (0)