From e4d3792751ada9cf5515e9d3282d8aff5548a0a1 Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Fri, 05 Nov 2021 19:35:47 +0000 Subject: [PATCH] feat: add benchmarks for burn_from --- --- a/pallets/common/src/benchmarking.rs +++ b/pallets/common/src/benchmarking.rs @@ -54,7 +54,6 @@ variable_on_chain_schema, const_on_chain_schema, meta_update_permission: Default::default(), - transfers_enabled: true, }) .and_then(CollectionHandle::try_get) .map(cast) --- a/pallets/fungible/src/benchmarking.rs +++ b/pallets/fungible/src/benchmarking.rs @@ -58,4 +58,13 @@ >::create_item(&collection, &owner, (sender.clone(), 200))?; >::set_allowance(&collection, &sender, &spender, 200)?; }: {>::transfer_from(&collection, &spender, &sender, &receiver, 100)?} + + burn_from { + bench_init!{ + owner: sub; collection: collection(owner); + owner: cross_from_sub; sender: cross_sub; burner: cross_sub; + }; + >::create_item(&collection, &owner, (sender.clone(), 200))?; + >::set_allowance(&collection, &sender, &burner, 200)?; + }: {>::burn_from(&collection, &burner, &sender, 100)?} } --- a/pallets/fungible/src/common.rs +++ b/pallets/fungible/src/common.rs @@ -37,7 +37,7 @@ } fn burn_from() -> Weight { - 0 + >::burn_from() } fn set_variable_metadata(_bytes: u32) -> Weight { --- a/pallets/fungible/src/weights.rs +++ b/pallets/fungible/src/weights.rs @@ -75,6 +75,14 @@ .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } + // Storage: Fungible Allowance (r:1 w:1) + // Storage: Fungible TotalSupply (r:1 w:1) + // Storage: Fungible Balance (r:1 w:1) + fn burn_from() -> Weight { + (55_874_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } } // For backwards compatibility and tests @@ -113,4 +121,12 @@ .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } + // Storage: Fungible Allowance (r:1 w:1) + // Storage: Fungible TotalSupply (r:1 w:1) + // Storage: Fungible Balance (r:1 w:1) + fn burn_from() -> Weight { + (55_874_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(3 as Weight)) + .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + } } --- a/pallets/nonfungible/src/benchmarking.rs +++ b/pallets/nonfungible/src/benchmarking.rs @@ -89,6 +89,15 @@ >::set_allowance(&collection, &sender, item, Some(&spender))?; }: {>::transfer_from(&collection, &spender, &sender, &receiver, item)?} + burn_from { + bench_init!{ + owner: sub; collection: collection(owner); + owner: cross_from_sub; sender: cross_sub; burner: cross_sub; + }; + let item = create_max_item(&collection, &owner, sender.clone())?; + >::set_allowance(&collection, &sender, item, Some(&burner))?; + }: {>::burn_from(&collection, &burner, &sender, item)?} + set_variable_metadata { let b in 0..CUSTOM_DATA_LIMIT; bench_init!{ --- a/pallets/nonfungible/src/common.rs +++ b/pallets/nonfungible/src/common.rs @@ -38,7 +38,7 @@ } fn burn_from() -> Weight { - 0 + >::burn_from() } fn set_variable_metadata(bytes: u32) -> Weight { --- a/pallets/nonfungible/src/weights.rs +++ b/pallets/nonfungible/src/weights.rs @@ -98,6 +98,15 @@ .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(6 as Weight)) } + // Storage: Nonfungible Allowance (r:1 w:1) + // Storage: Nonfungible TokenData (r:1 w:1) + // Storage: Nonfungible TokensBurnt (r:1 w:1) + // Storage: Nonfungible Owned (r:0 w:1) + fn burn_from() -> Weight { + (53_429_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) + } // Storage: Nonfungible TokenData (r:1 w:1) fn set_variable_metadata(_b: u32, ) -> Weight { (6_380_000 as Weight) @@ -163,6 +172,15 @@ .saturating_add(RocksDbWeight::get().reads(4 as Weight)) .saturating_add(RocksDbWeight::get().writes(6 as Weight)) } + // Storage: Nonfungible Allowance (r:1 w:1) + // Storage: Nonfungible TokenData (r:1 w:1) + // Storage: Nonfungible TokensBurnt (r:1 w:1) + // Storage: Nonfungible Owned (r:0 w:1) + fn burn_from() -> Weight { + (53_429_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(3 as Weight)) + .saturating_add(RocksDbWeight::get().writes(4 as Weight)) + } // Storage: Nonfungible TokenData (r:1 w:1) fn set_variable_metadata(_b: u32, ) -> Weight { (6_380_000 as Weight) --- a/pallets/refungible/src/benchmarking.rs +++ b/pallets/refungible/src/benchmarking.rs @@ -149,6 +149,16 @@ >::set_allowance(&collection, &sender, &spender, item, 200)?; }: {>::transfer_from(&collection, &spender, &sender, &receiver, item, 200)?} + // Both source account and token is destroyed + burn_from { + bench_init!{ + owner: sub; collection: collection(owner); + owner: cross_from_sub; sender: cross_sub; burner: cross_sub; + }; + let item = create_max_item(&collection, &owner, [(sender.clone(), 200)])?; + >::set_allowance(&collection, &sender, &burner, item, 200)?; + }: {>::burn_from(&collection, &burner, &sender, item, 200)?} + set_variable_metadata { let b in 0..CUSTOM_DATA_LIMIT; bench_init!{ --- a/pallets/refungible/src/weights.rs +++ b/pallets/refungible/src/weights.rs @@ -166,6 +166,18 @@ .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(7 as Weight)) } + // Storage: Refungible Allowance (r:1 w:1) + // Storage: Refungible TotalSupply (r:1 w:1) + // Storage: Refungible Balance (r:1 w:1) + // Storage: Refungible AccountBalance (r:1 w:1) + // Storage: Refungible TokensBurnt (r:1 w:1) + // Storage: Refungible TokenData (r:0 w:1) + // Storage: Refungible Owned (r:0 w:1) + fn burn_from() -> Weight { + (60_903_000 as Weight) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(7 as Weight)) + } // Storage: Refungible TokenData (r:1 w:1) fn set_variable_metadata(_b: u32, ) -> Weight { (6_801_000 as Weight) @@ -292,6 +304,18 @@ .saturating_add(RocksDbWeight::get().reads(5 as Weight)) .saturating_add(RocksDbWeight::get().writes(7 as Weight)) } + // Storage: Refungible Allowance (r:1 w:1) + // Storage: Refungible TotalSupply (r:1 w:1) + // Storage: Refungible Balance (r:1 w:1) + // Storage: Refungible AccountBalance (r:1 w:1) + // Storage: Refungible TokensBurnt (r:1 w:1) + // Storage: Refungible TokenData (r:0 w:1) + // Storage: Refungible Owned (r:0 w:1) + fn burn_from() -> Weight { + (60_903_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(5 as Weight)) + .saturating_add(RocksDbWeight::get().writes(7 as Weight)) + } // Storage: Refungible TokenData (r:1 w:1) fn set_variable_metadata(_b: u32, ) -> Weight { (6_801_000 as Weight) --- a/pallets/scheduler/src/benchmarking.rs +++ b/pallets/scheduler/src/benchmarking.rs @@ -33,7 +33,7 @@ // Add `n` named items to the schedule fn fill_schedule(when: T::BlockNumber, n: u32) -> Result<(), &'static str> { // Essentially a no-op call. - let call = frame_system::Call::set_storage(vec![]); + let call = frame_system::Call::set_storage { items: vec![] }; for i in 0..n { // Named schedule is strictly heavier than anonymous Scheduler::::do_schedule_named( @@ -61,7 +61,7 @@ let periodic = Some((T::BlockNumber::one(), 100)); let priority = 0; // Essentially a no-op call. - let call = Box::new(frame_system::Call::set_storage(vec![]).into()); + let call = Box::new(frame_system::Call::set_storage { items: vec![] }.into()); fill_schedule::(when, s)?; }: _(RawOrigin::Root, when, periodic, priority, call) @@ -98,7 +98,7 @@ let periodic = Some((T::BlockNumber::one(), 100)); let priority = 0; // Essentially a no-op call. - let call = Box::new(frame_system::Call::set_storage(vec![]).into()); + let call = Box::new(frame_system::Call::set_storage { items: vec![] }.into()); fill_schedule::(when, s)?; }: _(RawOrigin::Root, id, when, periodic, priority, call) --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -23,7 +23,9 @@ 'frame-support/runtime-benchmarks', 'frame-system-benchmarking', 'frame-system/runtime-benchmarks', + 'pallet-ethereum/runtime-benchmarks', 'pallet-evm-migration/runtime-benchmarks', + 'pallet-evm-coder-substrate/runtime-benchmarks', 'pallet-balances/runtime-benchmarks', 'pallet-timestamp/runtime-benchmarks', 'pallet-common/runtime-benchmarks', --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -1327,6 +1327,7 @@ list_benchmark!(list, extra, pallet_fungible, Fungible); list_benchmark!(list, extra, pallet_refungible, Refungible); list_benchmark!(list, extra, pallet_nonfungible, Nonfungible); + // list_benchmark!(list, extra, pallet_evm_coder_substrate, EvmCoderSubstrate); let storage_info = AllPalletsWithSystem::storage_info(); @@ -1360,6 +1361,7 @@ add_benchmark!(params, batches, pallet_fungible, Fungible); add_benchmark!(params, batches, pallet_refungible, Refungible); add_benchmark!(params, batches, pallet_nonfungible, Nonfungible); + // add_benchmark!(params, batches, pallet_evm_coder_substrate, EvmCoderSubstrate); if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) } Ok(batches) -- gitstuff