mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-21 07:31:03 +00:00
Dont use benchmark range on constant functions (#12456)
* dont use benchmark range on constant function * update weights * fix * new weights * Update frame/examples/basic/src/benchmarking.rs Co-authored-by: parity-processbot <>
This commit is contained in:
@@ -34,25 +34,26 @@ use frame_system::RawOrigin;
|
|||||||
// Details on using the benchmarks macro can be seen at:
|
// Details on using the benchmarks macro can be seen at:
|
||||||
// https://paritytech.github.io/substrate/master/frame_benchmarking/trait.Benchmarking.html#tymethod.benchmarks
|
// https://paritytech.github.io/substrate/master/frame_benchmarking/trait.Benchmarking.html#tymethod.benchmarks
|
||||||
benchmarks! {
|
benchmarks! {
|
||||||
// This will measure the execution time of `set_dummy` for b in [0..1000] range.
|
// This will measure the execution time of `set_dummy`.
|
||||||
set_dummy_benchmark {
|
set_dummy_benchmark {
|
||||||
// This is the benchmark setup phase
|
// This is the benchmark setup phase.
|
||||||
let b in 0 .. 1000;
|
// `set_dummy` is a constant time function, hence we hard-code some random value here.
|
||||||
}: set_dummy(RawOrigin::Root, b.into()) // The execution phase is just running `set_dummy` extrinsic call
|
let value = 1000u32.into();
|
||||||
|
}: set_dummy(RawOrigin::Root, value) // The execution phase is just running `set_dummy` extrinsic call
|
||||||
verify {
|
verify {
|
||||||
// This is the optional benchmark verification phase, asserting certain states.
|
// This is the optional benchmark verification phase, asserting certain states.
|
||||||
assert_eq!(Pallet::<T>::dummy(), Some(b.into()))
|
assert_eq!(Pallet::<T>::dummy(), Some(value))
|
||||||
}
|
}
|
||||||
|
|
||||||
// This will measure the execution time of `accumulate_dummy` for b in [0..1000] range.
|
// This will measure the execution time of `accumulate_dummy`.
|
||||||
// The benchmark execution phase is shorthanded. When the name of the benchmark case is the same
|
// The benchmark execution phase is shorthanded. When the name of the benchmark case is the same
|
||||||
// as the extrinsic call. `_(...)` is used to represent the extrinsic name.
|
// as the extrinsic call. `_(...)` is used to represent the extrinsic name.
|
||||||
// The benchmark verification phase is omitted.
|
// The benchmark verification phase is omitted.
|
||||||
accumulate_dummy {
|
accumulate_dummy {
|
||||||
let b in 0 .. 1000;
|
let value = 1000u32.into();
|
||||||
// The caller account is whitelisted for DB reads/write by the benchmarking macro.
|
// The caller account is whitelisted for DB reads/write by the benchmarking macro.
|
||||||
let caller: T::AccountId = whitelisted_caller();
|
let caller: T::AccountId = whitelisted_caller();
|
||||||
}: _(RawOrigin::Signed(caller), b.into())
|
}: _(RawOrigin::Signed(caller), value)
|
||||||
|
|
||||||
// This will measure the execution time of sorting a vector.
|
// This will measure the execution time of sorting a vector.
|
||||||
sort_vector {
|
sort_vector {
|
||||||
|
|||||||
@@ -498,7 +498,7 @@ pub mod pallet {
|
|||||||
// The weight for this extrinsic we rely on the auto-generated `WeightInfo` from the
|
// The weight for this extrinsic we rely on the auto-generated `WeightInfo` from the
|
||||||
// benchmark toolchain.
|
// benchmark toolchain.
|
||||||
#[pallet::weight(
|
#[pallet::weight(
|
||||||
<T as pallet::Config>::WeightInfo::accumulate_dummy((*increase_by).saturated_into())
|
<T as pallet::Config>::WeightInfo::accumulate_dummy()
|
||||||
)]
|
)]
|
||||||
pub fn accumulate_dummy(origin: OriginFor<T>, increase_by: T::Balance) -> DispatchResult {
|
pub fn accumulate_dummy(origin: OriginFor<T>, increase_by: T::Balance) -> DispatchResult {
|
||||||
// This is a public call, so we ensure that the origin is some signed account.
|
// This is a public call, so we ensure that the origin is some signed account.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// This file is part of Substrate.
|
// This file is part of Substrate.
|
||||||
|
|
||||||
// Copyright (C) 2021-2022 Parity Technologies (UK) Ltd.
|
// Copyright (C) 2022 Parity Technologies (UK) Ltd.
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@@ -17,34 +17,26 @@
|
|||||||
|
|
||||||
//! Autogenerated weights for pallet_example_basic
|
//! Autogenerated weights for pallet_example_basic
|
||||||
//!
|
//!
|
||||||
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0
|
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
|
||||||
//! DATE: 2021-03-15, STEPS: `[100, ]`, REPEAT: 10, LOW RANGE: `[]`, HIGH RANGE: `[]`
|
//! DATE: 2022-10-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`
|
||||||
//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 128
|
//! HOSTNAME: `Shawns-MacBook-Pro.local`, CPU: `<UNKNOWN>`
|
||||||
|
//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
|
||||||
|
|
||||||
// Executed Command:
|
// Executed Command:
|
||||||
// ./target/release/substrate
|
// ./target/release/substrate
|
||||||
// benchmark
|
// benchmark
|
||||||
// --chain
|
// pallet
|
||||||
// dev
|
// --chain=dev
|
||||||
// --execution
|
// --execution=wasm
|
||||||
// wasm
|
// --wasm-execution=compiled
|
||||||
// --wasm-execution
|
// --pallet=pallet_example_basic
|
||||||
// compiled
|
// --extrinsic=*
|
||||||
// --pallet
|
// --steps=50
|
||||||
// pallet_example_basic
|
// --repeat=20
|
||||||
// --extrinsic
|
// --output=./
|
||||||
// *
|
|
||||||
// --steps
|
|
||||||
// 100
|
|
||||||
// --repeat
|
|
||||||
// 10
|
|
||||||
// --raw
|
|
||||||
// --output
|
|
||||||
// ./
|
|
||||||
// --template
|
// --template
|
||||||
// ./.maintain/frame-weight-template.hbs
|
// ./.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)]
|
||||||
@@ -54,48 +46,50 @@ use sp_std::marker::PhantomData;
|
|||||||
|
|
||||||
/// Weight functions needed for pallet_example_basic.
|
/// Weight functions needed for pallet_example_basic.
|
||||||
pub trait WeightInfo {
|
pub trait WeightInfo {
|
||||||
fn set_dummy_benchmark(b: u32, ) -> Weight;
|
fn set_dummy_benchmark() -> Weight;
|
||||||
fn accumulate_dummy(b: u32, ) -> Weight;
|
fn accumulate_dummy() -> Weight;
|
||||||
fn sort_vector(x: u32, ) -> Weight;
|
fn sort_vector(x: u32, ) -> Weight;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Weights for pallet_example_basic using the Substrate node and recommended hardware.
|
/// Weights for pallet_example_basic using the Substrate node and recommended hardware.
|
||||||
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 set_dummy_benchmark(b: u32, ) -> Weight {
|
// Storage: BasicExample Dummy (r:0 w:1)
|
||||||
Weight::from_ref_time(5_834_000 as u64)
|
fn set_dummy_benchmark() -> Weight {
|
||||||
.saturating_add(Weight::from_ref_time(24_000 as u64).saturating_mul(b as u64))
|
Weight::from_ref_time(19_000_000 as u64)
|
||||||
.saturating_add(T::DbWeight::get().writes(1 as u64))
|
.saturating_add(T::DbWeight::get().writes(1 as u64))
|
||||||
}
|
}
|
||||||
fn accumulate_dummy(b: u32, ) -> Weight {
|
// Storage: BasicExample Dummy (r:1 w:1)
|
||||||
Weight::from_ref_time(51_353_000 as u64)
|
fn accumulate_dummy() -> Weight {
|
||||||
.saturating_add(Weight::from_ref_time(14_000 as u64).saturating_mul(b as u64))
|
Weight::from_ref_time(18_000_000 as u64)
|
||||||
.saturating_add(T::DbWeight::get().reads(1 as u64))
|
.saturating_add(T::DbWeight::get().reads(1 as u64))
|
||||||
.saturating_add(T::DbWeight::get().writes(1 as u64))
|
.saturating_add(T::DbWeight::get().writes(1 as u64))
|
||||||
}
|
}
|
||||||
|
/// The range of component `x` is `[0, 10000]`.
|
||||||
fn sort_vector(x: u32, ) -> Weight {
|
fn sort_vector(x: u32, ) -> Weight {
|
||||||
Weight::from_ref_time(2_569_000 as u64)
|
Weight::from_ref_time(0 as u64)
|
||||||
// Standard Error: 0
|
// Standard Error: 2
|
||||||
.saturating_add(Weight::from_ref_time(4_000 as u64).saturating_mul(x as u64))
|
.saturating_add(Weight::from_ref_time(520 as u64).saturating_mul(x as u64))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// For backwards compatibility and tests
|
// For backwards compatibility and tests
|
||||||
impl WeightInfo for () {
|
impl WeightInfo for () {
|
||||||
fn set_dummy_benchmark(b: u32, ) -> Weight {
|
// Storage: BasicExample Dummy (r:0 w:1)
|
||||||
Weight::from_ref_time(5_834_000 as u64)
|
fn set_dummy_benchmark() -> Weight {
|
||||||
.saturating_add(Weight::from_ref_time(24_000 as u64).saturating_mul(b as u64))
|
Weight::from_ref_time(19_000_000 as u64)
|
||||||
.saturating_add(RocksDbWeight::get().writes(1 as u64))
|
.saturating_add(RocksDbWeight::get().writes(1 as u64))
|
||||||
}
|
}
|
||||||
fn accumulate_dummy(b: u32, ) -> Weight {
|
// Storage: BasicExample Dummy (r:1 w:1)
|
||||||
Weight::from_ref_time(51_353_000 as u64)
|
fn accumulate_dummy() -> Weight {
|
||||||
.saturating_add(Weight::from_ref_time(14_000 as u64).saturating_mul(b as u64))
|
Weight::from_ref_time(18_000_000 as u64)
|
||||||
.saturating_add(RocksDbWeight::get().reads(1 as u64))
|
.saturating_add(RocksDbWeight::get().reads(1 as u64))
|
||||||
.saturating_add(RocksDbWeight::get().writes(1 as u64))
|
.saturating_add(RocksDbWeight::get().writes(1 as u64))
|
||||||
}
|
}
|
||||||
|
/// The range of component `x` is `[0, 10000]`.
|
||||||
fn sort_vector(x: u32, ) -> Weight {
|
fn sort_vector(x: u32, ) -> Weight {
|
||||||
Weight::from_ref_time(2_569_000 as u64)
|
Weight::from_ref_time(0 as u64)
|
||||||
// Standard Error: 0
|
// Standard Error: 2
|
||||||
.saturating_add(Weight::from_ref_time(4_000 as u64).saturating_mul(x as u64))
|
.saturating_add(Weight::from_ref_time(520 as u64).saturating_mul(x as u64))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user