Skip to content
Snippets Groups Projects
Commit 7bf19fa9 authored by Oliver Tale-Yazdi's avatar Oliver Tale-Yazdi Committed by GitHub
Browse files

Fix Phragmen benchmark (#11137)


* Fix phragmen benchmark

Signed-off-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_elections_phragmen --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/elections-phragmen/src/weights.rs --template=./.maintain/frame-weight-template.hbs

Co-authored-by: default avatarParity Bot <admin@parity.io>
parent 87f02c87
No related merge requests found
......@@ -39,7 +39,9 @@ type Lookup<T> = <<T as frame_system::Config>::Lookup as StaticLookup>::Source;
/// grab new account with infinite balance.
fn endowed_account<T: Config>(name: &'static str, index: u32) -> T::AccountId {
let account: T::AccountId = account(name, index, 0);
let amount = default_stake::<T>(BALANCE_FACTOR);
// Fund each account with at-least his stake but still a sane amount as to not mess up
// the vote calculation.
let amount = default_stake::<T>(MAX_VOTERS) * BalanceOf::<T>::from(BALANCE_FACTOR);
let _ = T::Currency::make_free_balance_be(&account, amount);
// important to increase the total issuance since T::CurrencyToVote will need it to be sane for
// phragmen to work.
......@@ -54,9 +56,9 @@ fn as_lookup<T: Config>(account: T::AccountId) -> Lookup<T> {
}
/// Get a reasonable amount of stake based on the execution trait's configuration
fn default_stake<T: Config>(factor: u32) -> BalanceOf<T> {
let factor = BalanceOf::<T>::from(factor);
T::Currency::minimum_balance() * factor
fn default_stake<T: Config>(num_votes: u32) -> BalanceOf<T> {
let min = T::Currency::minimum_balance();
Elections::<T>::deposit_of(num_votes as usize).max(min)
}
/// Get the current number of candidates.
......@@ -88,7 +90,7 @@ fn submit_candidates_with_self_vote<T: Config>(
prefix: &'static str,
) -> Result<Vec<T::AccountId>, &'static str> {
let candidates = submit_candidates::<T>(c, prefix)?;
let stake = default_stake::<T>(BALANCE_FACTOR);
let stake = default_stake::<T>(c);
let _ = candidates
.iter()
.map(|c| submit_voter::<T>(c.clone(), vec![c.clone()], stake).map(|_| ()))
......@@ -112,7 +114,7 @@ fn distribute_voters<T: Config>(
num_voters: u32,
votes: usize,
) -> Result<(), &'static str> {
let stake = default_stake::<T>(BALANCE_FACTOR);
let stake = default_stake::<T>(num_voters);
for i in 0..num_voters {
// to ensure that votes are different
all_candidates.rotate_left(1);
......@@ -160,7 +162,7 @@ benchmarks! {
let all_candidates = submit_candidates::<T>(v, "candidates")?;
let caller = endowed_account::<T>("caller", 0);
let stake = default_stake::<T>(BALANCE_FACTOR);
let stake = default_stake::<T>(v);
// original votes.
let mut votes = all_candidates;
......@@ -173,14 +175,15 @@ benchmarks! {
}: vote(RawOrigin::Signed(caller), votes, stake)
vote_more {
let v in 2 .. (MAXIMUM_VOTE as u32);
let v in 2 .. (MAXIMUM_VOTE as u32);
clean::<T>();
// create a bunch of candidates.
let all_candidates = submit_candidates::<T>(v, "candidates")?;
let caller = endowed_account::<T>("caller", 0);
let stake = default_stake::<T>(BALANCE_FACTOR);
// Multiply the stake with 10 since we want to be able to divide it by 10 again.
let stake = default_stake::<T>(v) * BalanceOf::<T>::from(10u32);
// original votes.
let mut votes = all_candidates.iter().skip(1).cloned().collect::<Vec<_>>();
......@@ -194,14 +197,14 @@ benchmarks! {
}: vote(RawOrigin::Signed(caller), votes, stake / <BalanceOf<T>>::from(10u32))
vote_less {
let v in 2 .. (MAXIMUM_VOTE as u32);
let v in 2 .. (MAXIMUM_VOTE as u32);
clean::<T>();
// create a bunch of candidates.
let all_candidates = submit_candidates::<T>(v, "candidates")?;
let caller = endowed_account::<T>("caller", 0);
let stake = default_stake::<T>(BALANCE_FACTOR);
let stake = default_stake::<T>(v);
// original votes.
let mut votes = all_candidates;
......@@ -224,7 +227,7 @@ benchmarks! {
let caller = endowed_account::<T>("caller", 0);
let stake = default_stake::<T>(BALANCE_FACTOR);
let stake = default_stake::<T>(v);
submit_voter::<T>(caller.clone(), all_candidates, stake)?;
whitelist!(caller);
......@@ -238,7 +241,7 @@ benchmarks! {
let m = T::DesiredMembers::get() + T::DesiredRunnersUp::get();
clean::<T>();
let stake = default_stake::<T>(BALANCE_FACTOR);
let stake = default_stake::<T>(c);
// create m members and runners combined.
let _ = fill_seats_up_to::<T>(m)?;
......
......@@ -18,11 +18,11 @@
//! Autogenerated weights for pallet_elections_phragmen
//!
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
//! DATE: 2022-01-30, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! DATE: 2022-03-29, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
// Executed Command:
// ./target/production/substrate
// target/production/substrate
// benchmark
// --chain=dev
// --steps=50
......@@ -33,9 +33,7 @@
// --wasm-execution=compiled
// --heap-pages=4096
// --output=./frame/elections-phragmen/src/weights.rs
// --template=.maintain/frame-weight-template.hbs
// --header=HEADER-APACHE2
// --raw
// --template=./.maintain/frame-weight-template.hbs
#![cfg_attr(rustfmt, rustfmt_skip)]
#![allow(unused_parens)]
......@@ -70,9 +68,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
// Storage: Elections Voting (r:1 w:1)
// Storage: Balances Locks (r:1 w:1)
fn vote_equal(v: u32, ) -> Weight {
(23_406_000 as Weight)
(22_981_000 as Weight)
// Standard Error: 6_000
.saturating_add((270_000 as Weight).saturating_mul(v as Weight))
.saturating_add((232_000 as Weight).saturating_mul(v as Weight))
.saturating_add(T::DbWeight::get().reads(5 as Weight))
.saturating_add(T::DbWeight::get().writes(2 as Weight))
}
......@@ -82,9 +80,9 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
// Storage: Elections Voting (r:1 w:1)
// Storage: Balances Locks (r:1 w:1)
fn vote_more(v: u32, ) -> Weight {
(35_660_000 as Weight)
// Standard Error: 6_000
.saturating_add((316_000 as Weight).saturating_mul(v as Weight))
(36_170_000 as Weight)
// Standard Error: 8_000
.saturating_add((219_000 as Weight).saturating_mul(v as Weight))
.saturating_add(T::DbWeight::get().reads(5 as Weight))
.saturating_add(T::DbWeight::get().writes(2 as Weight))
}
......@@ -94,16 +92,16 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
// Storage: Elections Voting (r:1 w:1)
// Storage: Balances Locks (r:1 w:1)
fn vote_less(v: u32, ) -> Weight {
(35_999_000 as Weight)
// Standard Error: 6_000
.saturating_add((299_000 as Weight).saturating_mul(v as Weight))
(35_798_000 as Weight)
// Standard Error: 8_000
.saturating_add((241_000 as Weight).saturating_mul(v as Weight))
.saturating_add(T::DbWeight::get().reads(5 as Weight))
.saturating_add(T::DbWeight::get().writes(2 as Weight))
}
// Storage: Elections Voting (r:1 w:1)
// Storage: Balances Locks (r:1 w:1)
fn remove_voter() -> Weight {
(33_692_000 as Weight)
(33_060_000 as Weight)
.saturating_add(T::DbWeight::get().reads(2 as Weight))
.saturating_add(T::DbWeight::get().writes(2 as Weight))
}
......@@ -111,17 +109,17 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
// Storage: Elections Members (r:1 w:0)
// Storage: Elections RunnersUp (r:1 w:0)
fn submit_candidacy(c: u32, ) -> Weight {
(35_506_000 as Weight)
// Standard Error: 1_000
.saturating_add((192_000 as Weight).saturating_mul(c as Weight))
(35_384_000 as Weight)
// Standard Error: 0
.saturating_add((124_000 as Weight).saturating_mul(c as Weight))
.saturating_add(T::DbWeight::get().reads(3 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
// Storage: Elections Candidates (r:1 w:1)
fn renounce_candidacy_candidate(c: u32, ) -> Weight {
(31_402_000 as Weight)
(31_555_000 as Weight)
// Standard Error: 1_000
.saturating_add((113_000 as Weight).saturating_mul(c as Weight))
.saturating_add((78_000 as Weight).saturating_mul(c as Weight))
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
......@@ -131,13 +129,13 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
// Storage: Council Proposals (r:1 w:0)
// Storage: Council Members (r:0 w:1)
fn renounce_candidacy_members() -> Weight {
(42_727_000 as Weight)
(41_531_000 as Weight)
.saturating_add(T::DbWeight::get().reads(4 as Weight))
.saturating_add(T::DbWeight::get().writes(4 as Weight))
}
// Storage: Elections RunnersUp (r:1 w:1)
fn renounce_candidacy_runners_up() -> Weight {
(30_638_000 as Weight)
(30_762_000 as Weight)
.saturating_add(T::DbWeight::get().reads(1 as Weight))
.saturating_add(T::DbWeight::get().writes(1 as Weight))
}
......@@ -152,13 +150,13 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
// Storage: Council Proposals (r:1 w:0)
// Storage: Council Members (r:0 w:1)
fn remove_member_with_replacement() -> Weight {
(49_317_000 as Weight)
(48_287_000 as Weight)
.saturating_add(T::DbWeight::get().reads(5 as Weight))
.saturating_add(T::DbWeight::get().writes(5 as Weight))
}
// Storage: Elections RunnersUp (r:1 w:0)
fn remove_member_wrong_refund() -> Weight {
(4_688_000 as Weight)
(4_747_000 as Weight)
.saturating_add(T::DbWeight::get().reads(1 as Weight))
}
// Storage: Elections Voting (r:251 w:250)
......@@ -169,8 +167,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
// Storage: System Account (r:250 w:250)
fn clean_defunct_voters(v: u32, _d: u32, ) -> Weight {
(0 as Weight)
// Standard Error: 36_000
.saturating_add((51_016_000 as Weight).saturating_mul(v as Weight))
// Standard Error: 37_000
.saturating_add((49_564_000 as Weight).saturating_mul(v as Weight))
.saturating_add(T::DbWeight::get().reads(4 as Weight))
.saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(v as Weight)))
.saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(v as Weight)))
......@@ -186,12 +184,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
// Storage: System Account (r:2 w:2)
fn election_phragmen(c: u32, v: u32, e: u32, ) -> Weight {
(0 as Weight)
// Standard Error: 1_760_000
.saturating_add((29_569_000 as Weight).saturating_mul(c as Weight))
// Standard Error: 732_000
.saturating_add((51_842_000 as Weight).saturating_mul(v as Weight))
// Standard Error: 49_000
.saturating_add((3_546_000 as Weight).saturating_mul(e as Weight))
// Standard Error: 1_656_000
.saturating_add((29_011_000 as Weight).saturating_mul(c as Weight))
// Standard Error: 689_000
.saturating_add((49_204_000 as Weight).saturating_mul(v as Weight))
// Standard Error: 47_000
.saturating_add((3_352_000 as Weight).saturating_mul(e as Weight))
.saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(c as Weight)))
.saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(v as Weight)))
.saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(c as Weight)))
......@@ -206,9 +204,9 @@ impl WeightInfo for () {
// Storage: Elections Voting (r:1 w:1)
// Storage: Balances Locks (r:1 w:1)
fn vote_equal(v: u32, ) -> Weight {
(23_406_000 as Weight)
(22_981_000 as Weight)
// Standard Error: 6_000
.saturating_add((270_000 as Weight).saturating_mul(v as Weight))
.saturating_add((232_000 as Weight).saturating_mul(v as Weight))
.saturating_add(RocksDbWeight::get().reads(5 as Weight))
.saturating_add(RocksDbWeight::get().writes(2 as Weight))
}
......@@ -218,9 +216,9 @@ impl WeightInfo for () {
// Storage: Elections Voting (r:1 w:1)
// Storage: Balances Locks (r:1 w:1)
fn vote_more(v: u32, ) -> Weight {
(35_660_000 as Weight)
// Standard Error: 6_000
.saturating_add((316_000 as Weight).saturating_mul(v as Weight))
(36_170_000 as Weight)
// Standard Error: 8_000
.saturating_add((219_000 as Weight).saturating_mul(v as Weight))
.saturating_add(RocksDbWeight::get().reads(5 as Weight))
.saturating_add(RocksDbWeight::get().writes(2 as Weight))
}
......@@ -230,16 +228,16 @@ impl WeightInfo for () {
// Storage: Elections Voting (r:1 w:1)
// Storage: Balances Locks (r:1 w:1)
fn vote_less(v: u32, ) -> Weight {
(35_999_000 as Weight)
// Standard Error: 6_000
.saturating_add((299_000 as Weight).saturating_mul(v as Weight))
(35_798_000 as Weight)
// Standard Error: 8_000
.saturating_add((241_000 as Weight).saturating_mul(v as Weight))
.saturating_add(RocksDbWeight::get().reads(5 as Weight))
.saturating_add(RocksDbWeight::get().writes(2 as Weight))
}
// Storage: Elections Voting (r:1 w:1)
// Storage: Balances Locks (r:1 w:1)
fn remove_voter() -> Weight {
(33_692_000 as Weight)
(33_060_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(2 as Weight))
.saturating_add(RocksDbWeight::get().writes(2 as Weight))
}
......@@ -247,17 +245,17 @@ impl WeightInfo for () {
// Storage: Elections Members (r:1 w:0)
// Storage: Elections RunnersUp (r:1 w:0)
fn submit_candidacy(c: u32, ) -> Weight {
(35_506_000 as Weight)
// Standard Error: 1_000
.saturating_add((192_000 as Weight).saturating_mul(c as Weight))
(35_384_000 as Weight)
// Standard Error: 0
.saturating_add((124_000 as Weight).saturating_mul(c as Weight))
.saturating_add(RocksDbWeight::get().reads(3 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
// Storage: Elections Candidates (r:1 w:1)
fn renounce_candidacy_candidate(c: u32, ) -> Weight {
(31_402_000 as Weight)
(31_555_000 as Weight)
// Standard Error: 1_000
.saturating_add((113_000 as Weight).saturating_mul(c as Weight))
.saturating_add((78_000 as Weight).saturating_mul(c as Weight))
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
......@@ -267,13 +265,13 @@ impl WeightInfo for () {
// Storage: Council Proposals (r:1 w:0)
// Storage: Council Members (r:0 w:1)
fn renounce_candidacy_members() -> Weight {
(42_727_000 as Weight)
(41_531_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(4 as Weight))
.saturating_add(RocksDbWeight::get().writes(4 as Weight))
}
// Storage: Elections RunnersUp (r:1 w:1)
fn renounce_candidacy_runners_up() -> Weight {
(30_638_000 as Weight)
(30_762_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
.saturating_add(RocksDbWeight::get().writes(1 as Weight))
}
......@@ -288,13 +286,13 @@ impl WeightInfo for () {
// Storage: Council Proposals (r:1 w:0)
// Storage: Council Members (r:0 w:1)
fn remove_member_with_replacement() -> Weight {
(49_317_000 as Weight)
(48_287_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(5 as Weight))
.saturating_add(RocksDbWeight::get().writes(5 as Weight))
}
// Storage: Elections RunnersUp (r:1 w:0)
fn remove_member_wrong_refund() -> Weight {
(4_688_000 as Weight)
(4_747_000 as Weight)
.saturating_add(RocksDbWeight::get().reads(1 as Weight))
}
// Storage: Elections Voting (r:251 w:250)
......@@ -305,8 +303,8 @@ impl WeightInfo for () {
// Storage: System Account (r:250 w:250)
fn clean_defunct_voters(v: u32, _d: u32, ) -> Weight {
(0 as Weight)
// Standard Error: 36_000
.saturating_add((51_016_000 as Weight).saturating_mul(v as Weight))
// Standard Error: 37_000
.saturating_add((49_564_000 as Weight).saturating_mul(v as Weight))
.saturating_add(RocksDbWeight::get().reads(4 as Weight))
.saturating_add(RocksDbWeight::get().reads((3 as Weight).saturating_mul(v as Weight)))
.saturating_add(RocksDbWeight::get().writes((3 as Weight).saturating_mul(v as Weight)))
......@@ -322,12 +320,12 @@ impl WeightInfo for () {
// Storage: System Account (r:2 w:2)
fn election_phragmen(c: u32, v: u32, e: u32, ) -> Weight {
(0 as Weight)
// Standard Error: 1_760_000
.saturating_add((29_569_000 as Weight).saturating_mul(c as Weight))
// Standard Error: 732_000
.saturating_add((51_842_000 as Weight).saturating_mul(v as Weight))
// Standard Error: 49_000
.saturating_add((3_546_000 as Weight).saturating_mul(e as Weight))
// Standard Error: 1_656_000
.saturating_add((29_011_000 as Weight).saturating_mul(c as Weight))
// Standard Error: 689_000
.saturating_add((49_204_000 as Weight).saturating_mul(v as Weight))
// Standard Error: 47_000
.saturating_add((3_352_000 as Weight).saturating_mul(e as Weight))
.saturating_add(RocksDbWeight::get().reads((2 as Weight).saturating_mul(c as Weight)))
.saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(v as Weight)))
.saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(c as Weight)))
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment