mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-29 14:57:56 +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:
Generated
+2
@@ -1958,7 +1958,9 @@ dependencies = [
|
||||
"paste 1.0.6",
|
||||
"scale-info",
|
||||
"sp-api",
|
||||
"sp-application-crypto",
|
||||
"sp-io",
|
||||
"sp-keystore",
|
||||
"sp-runtime",
|
||||
"sp-runtime-interface",
|
||||
"sp-std",
|
||||
|
||||
@@ -22,6 +22,7 @@ sp-runtime-interface = { version = "4.0.0-dev", path = "../../primitives/runtime
|
||||
sp-runtime = { version = "4.0.0-dev", path = "../../primitives/runtime", default-features = false }
|
||||
sp-std = { version = "4.0.0-dev", path = "../../primitives/std", default-features = false }
|
||||
sp-io = { version = "4.0.0-dev", path = "../../primitives/io", default-features = false }
|
||||
sp-application-crypto = { version = "4.0.0-dev", path = "../../primitives/application-crypto", default-features = false }
|
||||
sp-storage = { version = "4.0.0-dev", path = "../../primitives/storage", default-features = false }
|
||||
frame-support = { version = "4.0.0-dev", default-features = false, path = "../support" }
|
||||
frame-system = { version = "4.0.0-dev", default-features = false, path = "../system" }
|
||||
@@ -29,6 +30,7 @@ log = { version = "0.4.14", default-features = false }
|
||||
|
||||
[dev-dependencies]
|
||||
hex-literal = "0.3.4"
|
||||
sp-keystore = { version = "0.10.0-dev", path = "../../primitives/keystore" }
|
||||
|
||||
[features]
|
||||
default = ["std"]
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
//! Autogenerated weights for frame_benchmarking
|
||||
//!
|
||||
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
|
||||
//! DATE: 2021-10-30, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`
|
||||
//! DATE: 2021-12-02, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`
|
||||
//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 128
|
||||
|
||||
// Executed Command:
|
||||
@@ -35,7 +35,6 @@
|
||||
// --output=./frame/benchmarking/src/weights.rs
|
||||
// --template=./.maintain/frame-weight-template.hbs
|
||||
|
||||
|
||||
#![cfg_attr(rustfmt, rustfmt_skip)]
|
||||
#![allow(unused_parens)]
|
||||
#![allow(unused_imports)]
|
||||
@@ -50,6 +49,7 @@ pub trait WeightInfo {
|
||||
fn multiplication(i: u32, ) -> Weight;
|
||||
fn division(i: u32, ) -> Weight;
|
||||
fn hashing(i: u32, ) -> Weight;
|
||||
fn sr25519_verification(i: u32, ) -> Weight;
|
||||
fn storage_read(i: u32, ) -> Weight;
|
||||
fn storage_write(i: u32, ) -> Weight;
|
||||
}
|
||||
@@ -58,32 +58,39 @@ pub trait WeightInfo {
|
||||
pub struct SubstrateWeight<T>(PhantomData<T>);
|
||||
impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
|
||||
fn addition(_i: u32, ) -> Weight {
|
||||
(337_000 as Weight)
|
||||
(284_000 as Weight)
|
||||
}
|
||||
fn subtraction(_i: u32, ) -> Weight {
|
||||
(343_000 as Weight)
|
||||
(279_000 as Weight)
|
||||
}
|
||||
fn multiplication(_i: u32, ) -> Weight {
|
||||
(340_000 as Weight)
|
||||
(278_000 as Weight)
|
||||
}
|
||||
fn division(_i: u32, ) -> Weight {
|
||||
(346_000 as Weight)
|
||||
(274_000 as Weight)
|
||||
}
|
||||
fn hashing(_i: u32, ) -> Weight {
|
||||
(35_449_143_000 as Weight)
|
||||
fn hashing(i: u32, ) -> Weight {
|
||||
(33_441_957_000 as Weight)
|
||||
// Standard Error: 535_000
|
||||
.saturating_add((363_000 as Weight).saturating_mul(i as Weight))
|
||||
}
|
||||
fn sr25519_verification(i: u32, ) -> Weight {
|
||||
(26_000 as Weight)
|
||||
// Standard Error: 14_000
|
||||
.saturating_add((48_151_000 as Weight).saturating_mul(i as Weight))
|
||||
}
|
||||
// Storage: Skipped Metadata (r:0 w:0)
|
||||
fn storage_read(i: u32, ) -> Weight {
|
||||
(0 as Weight)
|
||||
// Standard Error: 3_000
|
||||
.saturating_add((2_851_000 as Weight).saturating_mul(i as Weight))
|
||||
// Standard Error: 4_000
|
||||
.saturating_add((2_694_000 as Weight).saturating_mul(i as Weight))
|
||||
.saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(i as Weight)))
|
||||
}
|
||||
// Storage: Skipped Metadata (r:0 w:0)
|
||||
fn storage_write(i: u32, ) -> Weight {
|
||||
(0 as Weight)
|
||||
// Standard Error: 0
|
||||
.saturating_add((662_000 as Weight).saturating_mul(i as Weight))
|
||||
.saturating_add((606_000 as Weight).saturating_mul(i as Weight))
|
||||
.saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(i as Weight)))
|
||||
}
|
||||
}
|
||||
@@ -91,32 +98,39 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
|
||||
// For backwards compatibility and tests
|
||||
impl WeightInfo for () {
|
||||
fn addition(_i: u32, ) -> Weight {
|
||||
(337_000 as Weight)
|
||||
(284_000 as Weight)
|
||||
}
|
||||
fn subtraction(_i: u32, ) -> Weight {
|
||||
(343_000 as Weight)
|
||||
(279_000 as Weight)
|
||||
}
|
||||
fn multiplication(_i: u32, ) -> Weight {
|
||||
(340_000 as Weight)
|
||||
(278_000 as Weight)
|
||||
}
|
||||
fn division(_i: u32, ) -> Weight {
|
||||
(346_000 as Weight)
|
||||
(274_000 as Weight)
|
||||
}
|
||||
fn hashing(_i: u32, ) -> Weight {
|
||||
(35_449_143_000 as Weight)
|
||||
fn hashing(i: u32, ) -> Weight {
|
||||
(33_441_957_000 as Weight)
|
||||
// Standard Error: 535_000
|
||||
.saturating_add((363_000 as Weight).saturating_mul(i as Weight))
|
||||
}
|
||||
fn sr25519_verification(i: u32, ) -> Weight {
|
||||
(26_000 as Weight)
|
||||
// Standard Error: 14_000
|
||||
.saturating_add((48_151_000 as Weight).saturating_mul(i as Weight))
|
||||
}
|
||||
// Storage: Skipped Metadata (r:0 w:0)
|
||||
fn storage_read(i: u32, ) -> Weight {
|
||||
(0 as Weight)
|
||||
// Standard Error: 3_000
|
||||
.saturating_add((2_851_000 as Weight).saturating_mul(i as Weight))
|
||||
// Standard Error: 4_000
|
||||
.saturating_add((2_694_000 as Weight).saturating_mul(i as Weight))
|
||||
.saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(i as Weight)))
|
||||
}
|
||||
// Storage: Skipped Metadata (r:0 w:0)
|
||||
fn storage_write(i: u32, ) -> Weight {
|
||||
(0 as Weight)
|
||||
// Standard Error: 0
|
||||
.saturating_add((662_000 as Weight).saturating_mul(i as Weight))
|
||||
.saturating_add((606_000 as Weight).saturating_mul(i as Weight))
|
||||
.saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(i as Weight)))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user