mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-29 12:37:57 +00:00
Add baseline benchmark for sr25519 verification (#10414)
* Add baseline benchmark for sr25519 verification * cargo run --quiet --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=frame_benchmarking --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/benchmarking/src/weights.rs --template=./.maintain/frame-weight-template.hbs * Register keystore for correct test externalities * Update frame/benchmarking/src/baseline.rs Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com> * fix build Co-authored-by: Parity Bot <admin@parity.io> Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
This commit is contained in:
@@ -23,9 +23,23 @@
|
||||
use crate::benchmarks;
|
||||
use codec::Encode;
|
||||
use frame_system::Pallet as System;
|
||||
use sp_runtime::traits::Hash;
|
||||
use sp_application_crypto::KeyTypeId;
|
||||
use sp_runtime::{
|
||||
traits::{AppVerify, Hash},
|
||||
RuntimeAppPublic,
|
||||
};
|
||||
use sp_std::prelude::*;
|
||||
|
||||
pub const TEST_KEY_TYPE_ID: KeyTypeId = KeyTypeId(*b"test");
|
||||
|
||||
mod app_sr25519 {
|
||||
use super::TEST_KEY_TYPE_ID;
|
||||
use sp_application_crypto::{app_crypto, sr25519};
|
||||
app_crypto!(sr25519, TEST_KEY_TYPE_ID);
|
||||
}
|
||||
|
||||
type SignerId = app_sr25519::Public;
|
||||
|
||||
pub struct Pallet<T: Config>(System<T>);
|
||||
pub trait Config: frame_system::Config {}
|
||||
|
||||
@@ -75,6 +89,23 @@ benchmarks! {
|
||||
assert!(hash != T::Hash::default());
|
||||
}
|
||||
|
||||
sr25519_verification {
|
||||
let i in 1 .. 100;
|
||||
|
||||
let public = SignerId::generate_pair(None);
|
||||
|
||||
let sigs_count: u8 = i.try_into().unwrap();
|
||||
let msg_and_sigs: Vec<_> = (0..sigs_count).map(|j| {
|
||||
let msg = vec![j, j];
|
||||
(msg.clone(), public.sign(&msg).unwrap())
|
||||
})
|
||||
.collect();
|
||||
}: {
|
||||
msg_and_sigs.iter().for_each(|(msg, sig)| {
|
||||
assert!(sig.verify(&msg[..], &public));
|
||||
});
|
||||
}
|
||||
|
||||
#[skip_meta]
|
||||
storage_read {
|
||||
let i in 0 .. 1_000;
|
||||
@@ -169,7 +200,13 @@ pub mod mock {
|
||||
impl super::Config for Test {}
|
||||
|
||||
pub fn new_test_ext() -> sp_io::TestExternalities {
|
||||
use sp_keystore::{testing::KeyStore, KeystoreExt, SyncCryptoStorePtr};
|
||||
use sp_std::sync::Arc;
|
||||
|
||||
let t = frame_system::GenesisConfig::default().build_storage::<Test>().unwrap();
|
||||
sp_io::TestExternalities::new(t)
|
||||
let mut ext = sp_io::TestExternalities::new(t);
|
||||
ext.register_extension(KeystoreExt(Arc::new(KeyStore::new()) as SyncCryptoStorePtr));
|
||||
|
||||
ext
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user