mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-26 01:47:55 +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:
|
||||
// https://paritytech.github.io/substrate/master/frame_benchmarking/trait.Benchmarking.html#tymethod.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 {
|
||||
// This is the benchmark setup phase
|
||||
let b in 0 .. 1000;
|
||||
}: set_dummy(RawOrigin::Root, b.into()) // The execution phase is just running `set_dummy` extrinsic call
|
||||
// This is the benchmark setup phase.
|
||||
// `set_dummy` is a constant time function, hence we hard-code some random value here.
|
||||
let value = 1000u32.into();
|
||||
}: set_dummy(RawOrigin::Root, value) // The execution phase is just running `set_dummy` extrinsic call
|
||||
verify {
|
||||
// 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
|
||||
// as the extrinsic call. `_(...)` is used to represent the extrinsic name.
|
||||
// The benchmark verification phase is omitted.
|
||||
accumulate_dummy {
|
||||
let b in 0 .. 1000;
|
||||
let value = 1000u32.into();
|
||||
// The caller account is whitelisted for DB reads/write by the benchmarking macro.
|
||||
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.
|
||||
sort_vector {
|
||||
|
||||
@@ -498,7 +498,7 @@ pub mod pallet {
|
||||
// The weight for this extrinsic we rely on the auto-generated `WeightInfo` from the
|
||||
// benchmark toolchain.
|
||||
#[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 {
|
||||
// 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.
|
||||
|
||||
// Copyright (C) 2021-2022 Parity Technologies (UK) Ltd.
|
||||
// Copyright (C) 2022 Parity Technologies (UK) Ltd.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@@ -17,34 +17,26 @@
|
||||
|
||||
//! Autogenerated weights for pallet_example_basic
|
||||
//!
|
||||
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0
|
||||
//! DATE: 2021-03-15, STEPS: `[100, ]`, REPEAT: 10, LOW RANGE: `[]`, HIGH RANGE: `[]`
|
||||
//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 128
|
||||
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
|
||||
//! DATE: 2022-10-09, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`
|
||||
//! HOSTNAME: `Shawns-MacBook-Pro.local`, CPU: `<UNKNOWN>`
|
||||
//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
|
||||
|
||||
// Executed Command:
|
||||
// ./target/release/substrate
|
||||
// benchmark
|
||||
// --chain
|
||||
// dev
|
||||
// --execution
|
||||
// wasm
|
||||
// --wasm-execution
|
||||
// compiled
|
||||
// --pallet
|
||||
// pallet_example_basic
|
||||
// --extrinsic
|
||||
// *
|
||||
// --steps
|
||||
// 100
|
||||
// --repeat
|
||||
// 10
|
||||
// --raw
|
||||
// --output
|
||||
// ./
|
||||
// pallet
|
||||
// --chain=dev
|
||||
// --execution=wasm
|
||||
// --wasm-execution=compiled
|
||||
// --pallet=pallet_example_basic
|
||||
// --extrinsic=*
|
||||
// --steps=50
|
||||
// --repeat=20
|
||||
// --output=./
|
||||
// --template
|
||||
// ./.maintain/frame-weight-template.hbs
|
||||
|
||||
|
||||
#![cfg_attr(rustfmt, rustfmt_skip)]
|
||||
#![allow(unused_parens)]
|
||||
#![allow(unused_imports)]
|
||||
@@ -54,48 +46,50 @@ use sp_std::marker::PhantomData;
|
||||
|
||||
/// Weight functions needed for pallet_example_basic.
|
||||
pub trait WeightInfo {
|
||||
fn set_dummy_benchmark(b: u32, ) -> Weight;
|
||||
fn accumulate_dummy(b: u32, ) -> Weight;
|
||||
fn set_dummy_benchmark() -> Weight;
|
||||
fn accumulate_dummy() -> Weight;
|
||||
fn sort_vector(x: u32, ) -> Weight;
|
||||
}
|
||||
|
||||
/// Weights for pallet_example_basic using the Substrate node and recommended hardware.
|
||||
pub struct SubstrateWeight<T>(PhantomData<T>);
|
||||
impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
|
||||
fn set_dummy_benchmark(b: u32, ) -> Weight {
|
||||
Weight::from_ref_time(5_834_000 as u64)
|
||||
.saturating_add(Weight::from_ref_time(24_000 as u64).saturating_mul(b as u64))
|
||||
// Storage: BasicExample Dummy (r:0 w:1)
|
||||
fn set_dummy_benchmark() -> Weight {
|
||||
Weight::from_ref_time(19_000_000 as u64)
|
||||
.saturating_add(T::DbWeight::get().writes(1 as u64))
|
||||
}
|
||||
fn accumulate_dummy(b: u32, ) -> Weight {
|
||||
Weight::from_ref_time(51_353_000 as u64)
|
||||
.saturating_add(Weight::from_ref_time(14_000 as u64).saturating_mul(b as u64))
|
||||
// Storage: BasicExample Dummy (r:1 w:1)
|
||||
fn accumulate_dummy() -> Weight {
|
||||
Weight::from_ref_time(18_000_000 as u64)
|
||||
.saturating_add(T::DbWeight::get().reads(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 {
|
||||
Weight::from_ref_time(2_569_000 as u64)
|
||||
// Standard Error: 0
|
||||
.saturating_add(Weight::from_ref_time(4_000 as u64).saturating_mul(x as u64))
|
||||
Weight::from_ref_time(0 as u64)
|
||||
// Standard Error: 2
|
||||
.saturating_add(Weight::from_ref_time(520 as u64).saturating_mul(x as u64))
|
||||
}
|
||||
}
|
||||
|
||||
// For backwards compatibility and tests
|
||||
impl WeightInfo for () {
|
||||
fn set_dummy_benchmark(b: u32, ) -> Weight {
|
||||
Weight::from_ref_time(5_834_000 as u64)
|
||||
.saturating_add(Weight::from_ref_time(24_000 as u64).saturating_mul(b as u64))
|
||||
// Storage: BasicExample Dummy (r:0 w:1)
|
||||
fn set_dummy_benchmark() -> Weight {
|
||||
Weight::from_ref_time(19_000_000 as u64)
|
||||
.saturating_add(RocksDbWeight::get().writes(1 as u64))
|
||||
}
|
||||
fn accumulate_dummy(b: u32, ) -> Weight {
|
||||
Weight::from_ref_time(51_353_000 as u64)
|
||||
.saturating_add(Weight::from_ref_time(14_000 as u64).saturating_mul(b as u64))
|
||||
// Storage: BasicExample Dummy (r:1 w:1)
|
||||
fn accumulate_dummy() -> Weight {
|
||||
Weight::from_ref_time(18_000_000 as u64)
|
||||
.saturating_add(RocksDbWeight::get().reads(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 {
|
||||
Weight::from_ref_time(2_569_000 as u64)
|
||||
// Standard Error: 0
|
||||
.saturating_add(Weight::from_ref_time(4_000 as u64).saturating_mul(x as u64))
|
||||
Weight::from_ref_time(0 as u64)
|
||||
// Standard Error: 2
|
||||
.saturating_add(Weight::from_ref_time(520 as u64).saturating_mul(x as u64))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user