Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 16 additions & 13 deletions frame/elections-phragmen/src/benchmarking.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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.
Expand Down Expand Up @@ -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(|_| ()))
Expand All @@ -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);
Expand Down Expand Up @@ -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;
Expand All @@ -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<_>>();
Expand All @@ -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;
Expand All @@ -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);
Expand All @@ -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)?;
Expand Down
112 changes: 55 additions & 57 deletions frame/elections-phragmen/src/weights.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)]
Expand Down Expand Up @@ -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))
}
Expand All @@ -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))
}
Expand All @@ -94,34 +92,34 @@ 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))
}
// Storage: Elections Candidates (r:1 w:1)
// 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))
}
Expand All @@ -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))
}
Expand All @@ -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)
Expand All @@ -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)))
Expand All @@ -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)))
Expand All @@ -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))
}
Expand All @@ -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))
}
Expand All @@ -230,34 +228,34 @@ 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))
}
// Storage: Elections Candidates (r:1 w:1)
// 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))
}
Expand All @@ -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))
}
Expand All @@ -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)
Expand All @@ -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)))
Expand All @@ -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)))
Expand Down