Use the automated call decode weight for submit_unsigned benchmark (#9766)

* Use the automated call decode weight for  benchmark

* cargo run --quiet --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_election_provider_multi_phase --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/election-provider-multi-phase/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* cargo run --quiet --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_election_provider_multi_phase --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/election-provider-multi-phase/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* cargo run --quiet --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_election_provider_multi_phase --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/election-provider-multi-phase/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* cargo run --quiet --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_election_provider_multi_phase --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/election-provider-multi-phase/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* reduce the boundaries

* Fix

* Fox

* cargo run --quiet --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_election_provider_multi_phase --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/election-provider-multi-phase/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* reduce the numbers even less

* cargo run --quiet --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_election_provider_multi_phase --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/election-provider-multi-phase/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* Fix a few things

* cargo run --quiet --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_election_provider_multi_phase --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/election-provider-multi-phase/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* cargo run --quiet --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_election_provider_multi_phase --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/election-provider-multi-phase/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* update comment

Co-authored-by: Parity Bot <admin@parity.io>
This commit is contained in:
Kian Paimani
2021-09-22 15:38:21 +01:00
committed by GitHub
parent 0fcc2ef68c
commit f86d4128af
6 changed files with 94 additions and 100 deletions
@@ -243,10 +243,10 @@ frame_benchmarking::benchmarks! {
}
create_snapshot_internal {
// number of votes in snapshot. Fixed to maximum.
let v = T::BenchmarkingConfig::SNAPSHOT_MAXIMUM_VOTERS;
// number of targets in snapshot. Fixed to maximum.
let t = T::BenchmarkingConfig::MAXIMUM_TARGETS;
// number of votes in snapshot.
let v in (T::BenchmarkingConfig::VOTERS[0]) .. T::BenchmarkingConfig::VOTERS[1];
// number of targets in snapshot.
let t in (T::BenchmarkingConfig::TARGETS[0]) .. T::BenchmarkingConfig::TARGETS[1];
// we don't directly need the data-provider to be populated, but it is just easy to use it.
set_up_data_provider::<T>(v, t);
@@ -351,24 +351,8 @@ frame_benchmarking::benchmarks! {
assert!(<MultiPhase<T>>::queued_solution().is_none());
<CurrentPhase<T>>::put(Phase::Unsigned((true, 1u32.into())));
// encode the most significant storage item that needs to be decoded in the dispatch.
let encoded_snapshot = <MultiPhase<T>>::snapshot().ok_or("missing snapshot")?.encode();
let encoded_call = Call::<T>::submit_unsigned {
raw_solution: Box::new(raw_solution.clone()),
witness
}.encode();
}: {
assert_ok!(
<MultiPhase<T>>::submit_unsigned(
RawOrigin::None.into(),
Box::new(raw_solution),
witness,
)
);
let _decoded_snap = <RoundSnapshot<T::AccountId> as Decode>::decode(&mut &*encoded_snapshot)
.expect("decoding should not fail; qed.");
let _decoded_call = <Call<T> as Decode>::decode(&mut &*encoded_call).expect("decoding should not fail; qed.");
} verify {
}: _(RawOrigin::None, Box::new(raw_solution), witness)
verify {
assert!(<MultiPhase<T>>::queued_solution().is_some());
}
@@ -389,13 +373,8 @@ frame_benchmarking::benchmarks! {
assert_eq!(raw_solution.solution.voter_count() as u32, a);
assert_eq!(raw_solution.solution.unique_targets().len() as u32, d);
// encode the most significant storage item that needs to be decoded in the dispatch.
let encoded_snapshot = <MultiPhase<T>>::snapshot().ok_or("snapshot missing")?.encode();
}: {
assert_ok!(<MultiPhase<T>>::feasibility_check(raw_solution, ElectionCompute::Unsigned));
let _decoded_snap = <RoundSnapshot<T::AccountId> as Decode>::decode(&mut &*encoded_snapshot)
.expect("decoding should not fail; qed.");
}
// NOTE: this weight is not used anywhere, but the fact that it should succeed when execution in
@@ -1317,8 +1317,10 @@ impl<T: Config> Pallet<T> {
let (targets, voters, desired_targets) = Self::create_snapshot_external()?;
// ..therefore we only measure the weight of this and add it.
let internal_weight =
T::WeightInfo::create_snapshot_internal(voters.len() as u32, targets.len() as u32);
Self::create_snapshot_internal(targets, voters, desired_targets);
Self::register_weight(T::WeightInfo::create_snapshot_internal());
Self::register_weight(internal_weight);
Ok(())
}
@@ -304,11 +304,11 @@ impl multi_phase::weights::WeightInfo for DualMockWeightInfo {
<() as multi_phase::weights::WeightInfo>::on_initialize_nothing()
}
}
fn create_snapshot_internal() -> Weight {
fn create_snapshot_internal(v: u32, t: u32) -> Weight {
if MockWeightInfo::get() {
Zero::zero()
} else {
<() as multi_phase::weights::WeightInfo>::create_snapshot_internal()
<() as multi_phase::weights::WeightInfo>::create_snapshot_internal(v, t)
}
}
fn on_initialize_open_signed() -> Weight {
@@ -651,7 +651,7 @@ mod max_weight {
fn elect_queued(a: u32, d: u32) -> Weight {
unreachable!()
}
fn create_snapshot_internal() -> Weight {
fn create_snapshot_internal(v: u32, t: u32) -> Weight {
unreachable!()
}
fn on_initialize_nothing() -> Weight {
@@ -18,7 +18,7 @@
//! Autogenerated weights for pallet_election_provider_multi_phase
//!
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
//! DATE: 2021-08-18, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! DATE: 2021-09-22, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 128
// Executed Command:
@@ -50,7 +50,7 @@ pub trait WeightInfo {
fn on_initialize_open_unsigned() -> Weight;
fn finalize_signed_phase_accept_solution() -> Weight;
fn finalize_signed_phase_reject_solution() -> Weight;
fn create_snapshot_internal() -> Weight;
fn create_snapshot_internal(v: u32, t: u32, ) -> Weight;
fn elect_queued(a: u32, d: u32, ) -> Weight;
fn submit(c: u32, ) -> Weight;
fn submit_unsigned(v: u32, t: u32, a: u32, d: u32, ) -> Weight;
@@ -69,41 +69,45 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
// Storage: Staking ForceEra (r:1 w:0)
// Storage: ElectionProviderMultiPhase CurrentPhase (r:1 w:0)
fn on_initialize_nothing() -> Weight {
(23_878_000 as Weight)
(22_784_000 as Weight)
.saturating_add(T::DbWeight::get().reads(8 as Weight))
}
// Storage: ElectionProviderMultiPhase Round (r:1 w:0)
// Storage: ElectionProviderMultiPhase CurrentPhase (r:0 w:1)
fn on_initialize_open_signed() -> Weight {
(34_547_000 as Weight)
(32_763_000 as Weight)
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
// Storage: ElectionProviderMultiPhase Round (r:1 w:0)
// Storage: ElectionProviderMultiPhase CurrentPhase (r:0 w:1)
fn on_initialize_open_unsigned() -> Weight {
(33_568_000 as Weight)
(29_117_000 as Weight)
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
// Storage: System Account (r:1 w:1)
// Storage: ElectionProviderMultiPhase QueuedSolution (r:0 w:1)
fn finalize_signed_phase_accept_solution() -> Weight {
(50_596_000 as Weight)
(48_996_000 as Weight)
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().writes(2 as Weight))
}
// Storage: System Account (r:1 w:1)
fn finalize_signed_phase_reject_solution() -> Weight {
(33_389_000 as Weight)
(32_508_000 as Weight)
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
// Storage: ElectionProviderMultiPhase SnapshotMetadata (r:0 w:1)
// Storage: ElectionProviderMultiPhase DesiredTargets (r:0 w:1)
// Storage: ElectionProviderMultiPhase Snapshot (r:0 w:1)
fn create_snapshot_internal() -> Weight {
(8_835_233_000 as Weight)
fn create_snapshot_internal(v: u32, t: u32, ) -> Weight {
(96_001_000 as Weight)
// Standard Error: 1_000
.saturating_add((307_000 as Weight).saturating_mul(v as Weight))
// Standard Error: 2_000
.saturating_add((133_000 as Weight).saturating_mul(t as Weight))
.saturating_add(T::DbWeight::get().writes(3 as Weight))
}
// Storage: ElectionProviderMultiPhase SignedSubmissionIndices (r:1 w:1)
@@ -116,11 +120,11 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
// Storage: ElectionProviderMultiPhase Snapshot (r:0 w:1)
// Storage: ElectionProviderMultiPhase CurrentPhase (r:0 w:1)
fn elect_queued(a: u32, d: u32, ) -> Weight {
(82_395_000 as Weight)
// Standard Error: 1_000
.saturating_add((1_769_000 as Weight).saturating_mul(a as Weight))
// Standard Error: 13_000
.saturating_add((320_000 as Weight).saturating_mul(d as Weight))
(100_505_000 as Weight)
// Standard Error: 6_000
.saturating_add((1_665_000 as Weight).saturating_mul(a as Weight))
// Standard Error: 10_000
.saturating_add((443_000 as Weight).saturating_mul(d as Weight))
.saturating_add(T::DbWeight::get().reads(6 as Weight))
.saturating_add(T::DbWeight::get().writes(8 as Weight))
}
@@ -131,9 +135,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
// Storage: ElectionProviderMultiPhase SignedSubmissionNextIndex (r:1 w:1)
// Storage: ElectionProviderMultiPhase SignedSubmissionsMap (r:0 w:1)
fn submit(c: u32, ) -> Weight {
(77_368_000 as Weight)
// Standard Error: 9_000
.saturating_add((369_000 as Weight).saturating_mul(c as Weight))
(74_088_000 as Weight)
// Standard Error: 59_000
.saturating_add((187_000 as Weight).saturating_mul(c as Weight))
.saturating_add(T::DbWeight::get().reads(5 as Weight))
.saturating_add(T::DbWeight::get().writes(3 as Weight))
}
@@ -146,14 +150,14 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
// Storage: ElectionProviderMultiPhase Snapshot (r:1 w:0)
fn submit_unsigned(v: u32, t: u32, a: u32, d: u32, ) -> Weight {
(0 as Weight)
// Standard Error: 4_000
.saturating_add((3_553_000 as Weight).saturating_mul(v as Weight))
// Standard Error: 23_000
.saturating_add((35_000 as Weight).saturating_mul(t as Weight))
// Standard Error: 7_000
.saturating_add((10_600_000 as Weight).saturating_mul(a as Weight))
// Standard Error: 59_000
.saturating_add((6_128_000 as Weight).saturating_mul(d as Weight))
// Standard Error: 5_000
.saturating_add((1_970_000 as Weight).saturating_mul(v as Weight))
// Standard Error: 10_000
.saturating_add((173_000 as Weight).saturating_mul(t as Weight))
// Standard Error: 18_000
.saturating_add((9_783_000 as Weight).saturating_mul(a as Weight))
// Standard Error: 27_000
.saturating_add((2_224_000 as Weight).saturating_mul(d as Weight))
.saturating_add(T::DbWeight::get().reads(7 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
@@ -161,14 +165,16 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
// Storage: ElectionProviderMultiPhase DesiredTargets (r:1 w:0)
// Storage: ElectionProviderMultiPhase MinimumUntrustedScore (r:1 w:0)
// Storage: ElectionProviderMultiPhase Snapshot (r:1 w:0)
fn feasibility_check(v: u32, _t: u32, a: u32, d: u32, ) -> Weight {
fn feasibility_check(v: u32, t: u32, a: u32, d: u32, ) -> Weight {
(0 as Weight)
// Standard Error: 3_000
.saturating_add((3_478_000 as Weight).saturating_mul(v as Weight))
// Standard Error: 6_000
.saturating_add((8_930_000 as Weight).saturating_mul(a as Weight))
// Standard Error: 47_000
.saturating_add((5_199_000 as Weight).saturating_mul(d as Weight))
.saturating_add((1_910_000 as Weight).saturating_mul(v as Weight))
// Standard Error: 7_000
.saturating_add((111_000 as Weight).saturating_mul(t as Weight))
// Standard Error: 13_000
.saturating_add((7_741_000 as Weight).saturating_mul(a as Weight))
// Standard Error: 19_000
.saturating_add((1_844_000 as Weight).saturating_mul(d as Weight))
.saturating_add(T::DbWeight::get().reads(4 as Weight))
}
}
@@ -184,41 +190,45 @@ impl WeightInfo for () {
// Storage: Staking ForceEra (r:1 w:0)
// Storage: ElectionProviderMultiPhase CurrentPhase (r:1 w:0)
fn on_initialize_nothing() -> Weight {
(23_878_000 as Weight)
(22_784_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(8 as Weight))
}
// Storage: ElectionProviderMultiPhase Round (r:1 w:0)
// Storage: ElectionProviderMultiPhase CurrentPhase (r:0 w:1)
fn on_initialize_open_signed() -> Weight {
(34_547_000 as Weight)
(32_763_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
// Storage: ElectionProviderMultiPhase Round (r:1 w:0)
// Storage: ElectionProviderMultiPhase CurrentPhase (r:0 w:1)
fn on_initialize_open_unsigned() -> Weight {
(33_568_000 as Weight)
(29_117_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
// Storage: System Account (r:1 w:1)
// Storage: ElectionProviderMultiPhase QueuedSolution (r:0 w:1)
fn finalize_signed_phase_accept_solution() -> Weight {
(50_596_000 as Weight)
(48_996_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().writes(2 as Weight))
}
// Storage: System Account (r:1 w:1)
fn finalize_signed_phase_reject_solution() -> Weight {
(33_389_000 as Weight)
(32_508_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
// Storage: ElectionProviderMultiPhase SnapshotMetadata (r:0 w:1)
// Storage: ElectionProviderMultiPhase DesiredTargets (r:0 w:1)
// Storage: ElectionProviderMultiPhase Snapshot (r:0 w:1)
fn create_snapshot_internal() -> Weight {
(8_835_233_000 as Weight)
fn create_snapshot_internal(v: u32, t: u32, ) -> Weight {
(96_001_000 as Weight)
// Standard Error: 1_000
.saturating_add((307_000 as Weight).saturating_mul(v as Weight))
// Standard Error: 2_000
.saturating_add((133_000 as Weight).saturating_mul(t as Weight))
.saturating_add(RocksDbWeight::get().writes(3 as Weight))
}
// Storage: ElectionProviderMultiPhase SignedSubmissionIndices (r:1 w:1)
@@ -231,11 +241,11 @@ impl WeightInfo for () {
// Storage: ElectionProviderMultiPhase Snapshot (r:0 w:1)
// Storage: ElectionProviderMultiPhase CurrentPhase (r:0 w:1)
fn elect_queued(a: u32, d: u32, ) -> Weight {
(82_395_000 as Weight)
// Standard Error: 1_000
.saturating_add((1_769_000 as Weight).saturating_mul(a as Weight))
// Standard Error: 13_000
.saturating_add((320_000 as Weight).saturating_mul(d as Weight))
(100_505_000 as Weight)
// Standard Error: 6_000
.saturating_add((1_665_000 as Weight).saturating_mul(a as Weight))
// Standard Error: 10_000
.saturating_add((443_000 as Weight).saturating_mul(d as Weight))
.saturating_add(RocksDbWeight::get().reads(6 as Weight))
.saturating_add(RocksDbWeight::get().writes(8 as Weight))
}
@@ -246,9 +256,9 @@ impl WeightInfo for () {
// Storage: ElectionProviderMultiPhase SignedSubmissionNextIndex (r:1 w:1)
// Storage: ElectionProviderMultiPhase SignedSubmissionsMap (r:0 w:1)
fn submit(c: u32, ) -> Weight {
(77_368_000 as Weight)
// Standard Error: 9_000
.saturating_add((369_000 as Weight).saturating_mul(c as Weight))
(74_088_000 as Weight)
// Standard Error: 59_000
.saturating_add((187_000 as Weight).saturating_mul(c as Weight))
.saturating_add(RocksDbWeight::get().reads(5 as Weight))
.saturating_add(RocksDbWeight::get().writes(3 as Weight))
}
@@ -261,14 +271,14 @@ impl WeightInfo for () {
// Storage: ElectionProviderMultiPhase Snapshot (r:1 w:0)
fn submit_unsigned(v: u32, t: u32, a: u32, d: u32, ) -> Weight {
(0 as Weight)
// Standard Error: 4_000
.saturating_add((3_553_000 as Weight).saturating_mul(v as Weight))
// Standard Error: 23_000
.saturating_add((35_000 as Weight).saturating_mul(t as Weight))
// Standard Error: 7_000
.saturating_add((10_600_000 as Weight).saturating_mul(a as Weight))
// Standard Error: 59_000
.saturating_add((6_128_000 as Weight).saturating_mul(d as Weight))
// Standard Error: 5_000
.saturating_add((1_970_000 as Weight).saturating_mul(v as Weight))
// Standard Error: 10_000
.saturating_add((173_000 as Weight).saturating_mul(t as Weight))
// Standard Error: 18_000
.saturating_add((9_783_000 as Weight).saturating_mul(a as Weight))
// Standard Error: 27_000
.saturating_add((2_224_000 as Weight).saturating_mul(d as Weight))
.saturating_add(RocksDbWeight::get().reads(7 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
@@ -276,14 +286,16 @@ impl WeightInfo for () {
// Storage: ElectionProviderMultiPhase DesiredTargets (r:1 w:0)
// Storage: ElectionProviderMultiPhase MinimumUntrustedScore (r:1 w:0)
// Storage: ElectionProviderMultiPhase Snapshot (r:1 w:0)
fn feasibility_check(v: u32, _t: u32, a: u32, d: u32, ) -> Weight {
fn feasibility_check(v: u32, t: u32, a: u32, d: u32, ) -> Weight {
(0 as Weight)
// Standard Error: 3_000
.saturating_add((3_478_000 as Weight).saturating_mul(v as Weight))
// Standard Error: 6_000
.saturating_add((8_930_000 as Weight).saturating_mul(a as Weight))
// Standard Error: 47_000
.saturating_add((5_199_000 as Weight).saturating_mul(d as Weight))
.saturating_add((1_910_000 as Weight).saturating_mul(v as Weight))
// Standard Error: 7_000
.saturating_add((111_000 as Weight).saturating_mul(t as Weight))
// Standard Error: 13_000
.saturating_add((7_741_000 as Weight).saturating_mul(a as Weight))
// Standard Error: 19_000
.saturating_add((1_844_000 as Weight).saturating_mul(d as Weight))
.saturating_add(RocksDbWeight::get().reads(4 as Weight))
}
}