From 652e457b3296e21d016283f10868f26f95f06b64 Mon Sep 17 00:00:00 2001 From: bgallois <benjamin@gallois.cc> Date: Thu, 23 Nov 2023 18:08:45 +0100 Subject: [PATCH] add hooks benchmark pallet_universal_dividend --- .../universal-dividend/src/benchmarking.rs | 16 ++++++++++ pallets/universal-dividend/src/lib.rs | 4 +-- pallets/universal-dividend/src/weights.rs | 8 +++++ .../src/weights/pallet_universal_dividend.rs | 31 +++++++++++++++---- 4 files changed, 51 insertions(+), 8 deletions(-) diff --git a/pallets/universal-dividend/src/benchmarking.rs b/pallets/universal-dividend/src/benchmarking.rs index 311d0db97..99a392937 100644 --- a/pallets/universal-dividend/src/benchmarking.rs +++ b/pallets/universal-dividend/src/benchmarking.rs @@ -98,6 +98,22 @@ benchmarks! { assert!(!Balances::<T>::free_balance(&caller).is_zero()); assert_eq!(Balances::<T>::free_balance(&recipient), transfer_amount); } + on_removed_member { + let i in 0..T::MaxPastReeval::get(); + let caller: T::AccountId = T::AccountIdOf::convert(1).unwrap(); + CurrentUdIndex::<T>::put(2054u16); + T::MembersStorage::insert(&caller, FirstEligibleUd(Some(NonZeroU16::new(CurrentUdIndex::<T>::get() - i as u16).unwrap())))?; + let (_, uds_total) = compute_claim_uds::compute_claim_uds( + CurrentUdIndex::<T>::get(), + CurrentUdIndex::<T>::get() - i as u16, + PastReevals::<T>::get().into_iter(), + ); + }: {Pallet::<T>::on_removed_member(CurrentUdIndex::<T>::get() - i as u16, &caller);} + verify { + if i != 0 { + assert_has_event::<T>(Event::<T>::UdsAutoPaidAtRemoval {count: i as u16, total: uds_total, who: caller}.into()); + } + } impl_benchmark_test_suite!( Pallet, diff --git a/pallets/universal-dividend/src/lib.rs b/pallets/universal-dividend/src/lib.rs index e751f34da..09ba8511d 100644 --- a/pallets/universal-dividend/src/lib.rs +++ b/pallets/universal-dividend/src/lib.rs @@ -447,9 +447,9 @@ pub mod pallet { total: uds_total, who: who.clone(), }); - T::DbWeight::get().reads_writes(2, 1) + <T as pallet::Config>::WeightInfo::on_removed_member(first_ud_index as u32) } else { - T::DbWeight::get().reads(1) + <T as pallet::Config>::WeightInfo::on_removed_member(0) } } } diff --git a/pallets/universal-dividend/src/weights.rs b/pallets/universal-dividend/src/weights.rs index f4f7ccdc1..75eb80a58 100644 --- a/pallets/universal-dividend/src/weights.rs +++ b/pallets/universal-dividend/src/weights.rs @@ -23,6 +23,7 @@ pub trait WeightInfo { fn claim_uds(i: u32) -> Weight; fn transfer_ud() -> Weight; fn transfer_ud_keep_alive() -> Weight; + fn on_removed_member(i: u32) -> Weight; } // Insecure weights implementation, use it for tests only! @@ -50,4 +51,11 @@ impl WeightInfo for () { .saturating_add(RocksDbWeight::get().reads(2)) .saturating_add(RocksDbWeight::get().writes(2)) } + fn on_removed_member(i: u32) -> Weight { + Weight::from_parts(32_514_000, 0) + // Standard Error: 32_000 + .saturating_add(Weight::from_parts(8_000, 0).saturating_mul(i as u64)) + .saturating_add(RocksDbWeight::get().reads(4)) + .saturating_add(RocksDbWeight::get().writes(1)) + } } diff --git a/runtime/common/src/weights/pallet_universal_dividend.rs b/runtime/common/src/weights/pallet_universal_dividend.rs index d7eb897eb..8ba14ff14 100644 --- a/runtime/common/src/weights/pallet_universal_dividend.rs +++ b/runtime/common/src/weights/pallet_universal_dividend.rs @@ -50,8 +50,8 @@ impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightIn // Proof Size summary in bytes: // Measured: `644` // Estimated: `4109` - // Minimum execution time: 16_554_000 picoseconds. - Weight::from_parts(18_469_192, 0) + // Minimum execution time: 16_776_000 picoseconds. + Weight::from_parts(18_197_968, 0) .saturating_add(Weight::from_parts(0, 4109)) .saturating_add(T::DbWeight::get().reads(5)) .saturating_add(T::DbWeight::get().writes(2)) @@ -66,8 +66,8 @@ impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightIn // Proof Size summary in bytes: // Measured: `93` // Estimated: `3591` - // Minimum execution time: 23_431_000 picoseconds. - Weight::from_parts(23_871_000, 0) + // Minimum execution time: 22_683_000 picoseconds. + Weight::from_parts(23_755_000, 0) .saturating_add(Weight::from_parts(0, 3591)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -82,10 +82,29 @@ impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightIn // Proof Size summary in bytes: // Measured: `93` // Estimated: `3591` - // Minimum execution time: 16_815_000 picoseconds. - Weight::from_parts(17_432_000, 0) + // Minimum execution time: 16_789_000 picoseconds. + Weight::from_parts(17_565_000, 0) .saturating_add(Weight::from_parts(0, 3591)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) } + /// Storage: UniversalDividend CurrentUdIndex (r:1 w:0) + /// Proof: UniversalDividend CurrentUdIndex (max_values: Some(1), max_size: Some(2), added: 497, mode: MaxEncodedLen) + /// Storage: UniversalDividend PastReevals (r:1 w:0) + /// Proof: UniversalDividend PastReevals (max_values: Some(1), max_size: Some(1602), added: 2097, mode: MaxEncodedLen) + /// Storage: System Account (r:1 w:1) + /// Proof: System Account (max_values: None, max_size: Some(126), added: 2601, mode: MaxEncodedLen) + /// The range of component `i` is `[0, 160]`. + fn on_removed_member(i: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `215` + // Estimated: `3591` + // Minimum execution time: 2_717_000 picoseconds. + Weight::from_parts(9_608_158, 0) + .saturating_add(Weight::from_parts(0, 3591)) + // Standard Error: 975 + .saturating_add(Weight::from_parts(4_370, 0).saturating_mul(i.into())) + .saturating_add(T::DbWeight::get().reads(3)) + .saturating_add(T::DbWeight::get().writes(1)) + } } -- GitLab