mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-18 00:11:01 +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",
|
"paste 1.0.6",
|
||||||
"scale-info",
|
"scale-info",
|
||||||
"sp-api",
|
"sp-api",
|
||||||
|
"sp-application-crypto",
|
||||||
"sp-io",
|
"sp-io",
|
||||||
|
"sp-keystore",
|
||||||
"sp-runtime",
|
"sp-runtime",
|
||||||
"sp-runtime-interface",
|
"sp-runtime-interface",
|
||||||
"sp-std",
|
"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-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-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-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 }
|
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-support = { version = "4.0.0-dev", default-features = false, path = "../support" }
|
||||||
frame-system = { version = "4.0.0-dev", default-features = false, path = "../system" }
|
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]
|
[dev-dependencies]
|
||||||
hex-literal = "0.3.4"
|
hex-literal = "0.3.4"
|
||||||
|
sp-keystore = { version = "0.10.0-dev", path = "../../primitives/keystore" }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["std"]
|
default = ["std"]
|
||||||
|
|||||||
@@ -23,9 +23,23 @@
|
|||||||
use crate::benchmarks;
|
use crate::benchmarks;
|
||||||
use codec::Encode;
|
use codec::Encode;
|
||||||
use frame_system::Pallet as System;
|
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::*;
|
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 struct Pallet<T: Config>(System<T>);
|
||||||
pub trait Config: frame_system::Config {}
|
pub trait Config: frame_system::Config {}
|
||||||
|
|
||||||
@@ -75,6 +89,23 @@ benchmarks! {
|
|||||||
assert!(hash != T::Hash::default());
|
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]
|
#[skip_meta]
|
||||||
storage_read {
|
storage_read {
|
||||||
let i in 0 .. 1_000;
|
let i in 0 .. 1_000;
|
||||||
@@ -169,7 +200,13 @@ pub mod mock {
|
|||||||
impl super::Config for Test {}
|
impl super::Config for Test {}
|
||||||
|
|
||||||
pub fn new_test_ext() -> sp_io::TestExternalities {
|
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();
|
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
|
//! Autogenerated weights for frame_benchmarking
|
||||||
//!
|
//!
|
||||||
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
|
//! 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
|
//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 128
|
||||||
|
|
||||||
// Executed Command:
|
// Executed Command:
|
||||||
@@ -35,7 +35,6 @@
|
|||||||
// --output=./frame/benchmarking/src/weights.rs
|
// --output=./frame/benchmarking/src/weights.rs
|
||||||
// --template=./.maintain/frame-weight-template.hbs
|
// --template=./.maintain/frame-weight-template.hbs
|
||||||
|
|
||||||
|
|
||||||
#![cfg_attr(rustfmt, rustfmt_skip)]
|
#![cfg_attr(rustfmt, rustfmt_skip)]
|
||||||
#![allow(unused_parens)]
|
#![allow(unused_parens)]
|
||||||
#![allow(unused_imports)]
|
#![allow(unused_imports)]
|
||||||
@@ -50,6 +49,7 @@ pub trait WeightInfo {
|
|||||||
fn multiplication(i: u32, ) -> Weight;
|
fn multiplication(i: u32, ) -> Weight;
|
||||||
fn division(i: u32, ) -> Weight;
|
fn division(i: u32, ) -> Weight;
|
||||||
fn hashing(i: u32, ) -> Weight;
|
fn hashing(i: u32, ) -> Weight;
|
||||||
|
fn sr25519_verification(i: u32, ) -> Weight;
|
||||||
fn storage_read(i: u32, ) -> Weight;
|
fn storage_read(i: u32, ) -> Weight;
|
||||||
fn storage_write(i: u32, ) -> Weight;
|
fn storage_write(i: u32, ) -> Weight;
|
||||||
}
|
}
|
||||||
@@ -58,32 +58,39 @@ pub trait WeightInfo {
|
|||||||
pub struct SubstrateWeight<T>(PhantomData<T>);
|
pub struct SubstrateWeight<T>(PhantomData<T>);
|
||||||
impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
|
impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
|
||||||
fn addition(_i: u32, ) -> Weight {
|
fn addition(_i: u32, ) -> Weight {
|
||||||
(337_000 as Weight)
|
(284_000 as Weight)
|
||||||
}
|
}
|
||||||
fn subtraction(_i: u32, ) -> Weight {
|
fn subtraction(_i: u32, ) -> Weight {
|
||||||
(343_000 as Weight)
|
(279_000 as Weight)
|
||||||
}
|
}
|
||||||
fn multiplication(_i: u32, ) -> Weight {
|
fn multiplication(_i: u32, ) -> Weight {
|
||||||
(340_000 as Weight)
|
(278_000 as Weight)
|
||||||
}
|
}
|
||||||
fn division(_i: u32, ) -> Weight {
|
fn division(_i: u32, ) -> Weight {
|
||||||
(346_000 as Weight)
|
(274_000 as Weight)
|
||||||
}
|
}
|
||||||
fn hashing(_i: u32, ) -> Weight {
|
fn hashing(i: u32, ) -> Weight {
|
||||||
(35_449_143_000 as 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)
|
// Storage: Skipped Metadata (r:0 w:0)
|
||||||
fn storage_read(i: u32, ) -> Weight {
|
fn storage_read(i: u32, ) -> Weight {
|
||||||
(0 as Weight)
|
(0 as Weight)
|
||||||
// Standard Error: 3_000
|
// Standard Error: 4_000
|
||||||
.saturating_add((2_851_000 as Weight).saturating_mul(i as Weight))
|
.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)))
|
.saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(i as Weight)))
|
||||||
}
|
}
|
||||||
// Storage: Skipped Metadata (r:0 w:0)
|
// Storage: Skipped Metadata (r:0 w:0)
|
||||||
fn storage_write(i: u32, ) -> Weight {
|
fn storage_write(i: u32, ) -> Weight {
|
||||||
(0 as Weight)
|
(0 as Weight)
|
||||||
// Standard Error: 0
|
// 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)))
|
.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
|
// For backwards compatibility and tests
|
||||||
impl WeightInfo for () {
|
impl WeightInfo for () {
|
||||||
fn addition(_i: u32, ) -> Weight {
|
fn addition(_i: u32, ) -> Weight {
|
||||||
(337_000 as Weight)
|
(284_000 as Weight)
|
||||||
}
|
}
|
||||||
fn subtraction(_i: u32, ) -> Weight {
|
fn subtraction(_i: u32, ) -> Weight {
|
||||||
(343_000 as Weight)
|
(279_000 as Weight)
|
||||||
}
|
}
|
||||||
fn multiplication(_i: u32, ) -> Weight {
|
fn multiplication(_i: u32, ) -> Weight {
|
||||||
(340_000 as Weight)
|
(278_000 as Weight)
|
||||||
}
|
}
|
||||||
fn division(_i: u32, ) -> Weight {
|
fn division(_i: u32, ) -> Weight {
|
||||||
(346_000 as Weight)
|
(274_000 as Weight)
|
||||||
}
|
}
|
||||||
fn hashing(_i: u32, ) -> Weight {
|
fn hashing(i: u32, ) -> Weight {
|
||||||
(35_449_143_000 as 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)
|
// Storage: Skipped Metadata (r:0 w:0)
|
||||||
fn storage_read(i: u32, ) -> Weight {
|
fn storage_read(i: u32, ) -> Weight {
|
||||||
(0 as Weight)
|
(0 as Weight)
|
||||||
// Standard Error: 3_000
|
// Standard Error: 4_000
|
||||||
.saturating_add((2_851_000 as Weight).saturating_mul(i as Weight))
|
.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)))
|
.saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(i as Weight)))
|
||||||
}
|
}
|
||||||
// Storage: Skipped Metadata (r:0 w:0)
|
// Storage: Skipped Metadata (r:0 w:0)
|
||||||
fn storage_write(i: u32, ) -> Weight {
|
fn storage_write(i: u32, ) -> Weight {
|
||||||
(0 as Weight)
|
(0 as Weight)
|
||||||
// Standard Error: 0
|
// 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)))
|
.saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(i as Weight)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user