git.delta.rocks / unique-network / refs/commits / 87c401906db8

difftreelog

feat bench bulk mints

Yaroslav Bolyukin2021-08-31parent: #c2620ab.patch.diff
in: master

2 files changed

modifiedpallets/nft/src/benchmarking.rsdiffbeforeafterboth
--- a/pallets/nft/src/benchmarking.rs
+++ b/pallets/nft/src/benchmarking.rs
@@ -162,6 +162,16 @@
 		});
 	}: create_item(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(caller.clone()), data)
 
+	create_multiple_items_nft {
+		// TODO: Take item data size into account. As create_item_nft bench shows, this parameter has no effect on execution time,
+		// but it may if we increase CUSTOM_DATA_LIMIT
+		let b in 1..1000;
+
+		let caller: T::AccountId = account("caller", 0, SEED);
+		let collection = create_nft_collection::<T>(caller.clone())?;
+		let data = (0..b).map(|_| default_nft_data()).collect();
+	}: create_multiple_items(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(caller.clone()), data)
+
 	// fungible item
 	create_item_fungible {
 		let caller: T::AccountId = account("caller", 0, SEED);
@@ -171,6 +181,14 @@
 		});
 	}: create_item(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(caller.clone()), data)
 
+	create_multiple_items_fungible {
+		let b in 1..1000;
+
+		let caller: T::AccountId = account("caller", 0, SEED);
+		let collection = create_fungible_collection::<T>(caller.clone())?;
+		let data = (0..b).map(|_| default_fungible_data()).collect();
+	}: create_multiple_items(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(caller.clone()), data)
+
 	// refungible item
 	create_item_refungible {
 		let b in 0..(CUSTOM_DATA_LIMIT * 2);
@@ -184,6 +202,16 @@
 		});
 	}: create_item(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(caller.clone()), data)
 
+	create_multiple_items_refungible {
+		// TODO: Take item data size into account. As create_item_nft bench shows, this parameter has no effect on execution time,
+		// but it may if we increase CUSTOM_DATA_LIMIT
+		let b in 1..1000;
+
+		let caller: T::AccountId = account("caller", 0, SEED);
+		let collection = create_refungible_collection::<T>(caller.clone())?;
+		let data = (0..b).map(|_| default_re_fungible_data()).collect();
+	}: create_multiple_items(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(caller.clone()), data)
+
 	burn_item_nft {
 		let caller: T::AccountId = account("caller", 0, SEED);
 		let collection = create_nft_collection::<T>(caller.clone())?;
@@ -215,6 +243,11 @@
 		<Pallet<T>>::create_item(RawOrigin::Signed(caller.clone()).into(), collection, T::CrossAccountId::from_sub(caller.clone()), data)?;
 	}: transfer(RawOrigin::Signed(caller.clone()), T::CrossAccountId::from_sub(recipient.clone()), collection, 1, 1)
 
+	set_transfers_enabled_flag {
+		let caller: T::AccountId = account("caller", 0, SEED);
+		let collection = create_nft_collection::<T>(caller.clone())?;
+	}: _(RawOrigin::Signed(caller.clone()), collection, false)
+
 	approve_nft {
 		let caller: T::AccountId = account("caller", 0, SEED);
 		let collection = create_nft_collection::<T>(caller.clone())?;
modifiedpallets/nft/src/weights.rsdiffbeforeafterboth
before · pallets/nft/src/weights.rs
1// Template adopted from https://github.com/paritytech/substrate/blob/master/.maintain/frame-weight-template.hbs23//! Autogenerated weights for pallet_nft4//!5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.06//! DATE: 2021-08-30, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`7//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 12889// Executed Command:10// target/release/nft11// benchmark12// --pallet13// pallet-nft14// --wasm-execution15// compiled16// --extrinsic17// *18// --template19// .maintain/frame-weight-template.hbs20// --steps=5021// --repeat=2022// --output=./pallets/nft/src/weights.rs232425#![cfg_attr(rustfmt, rustfmt_skip)]26#![allow(unused_parens)]27#![allow(unused_imports)]2829use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};30use sp_std::marker::PhantomData;3132/// Weight functions needed for pallet_nft.33pub trait WeightInfo {34	fn create_collection() -> Weight;35	fn destroy_collection() -> Weight;36	fn add_to_white_list() -> Weight;37	fn remove_from_white_list() -> Weight;38	fn set_public_access_mode() -> Weight;39	fn set_mint_permission() -> Weight;40	fn change_collection_owner() -> Weight;41	fn add_collection_admin() -> Weight;42	fn remove_collection_admin() -> Weight;43	fn set_collection_sponsor() -> Weight;44	fn confirm_sponsorship() -> Weight;45	fn remove_collection_sponsor() -> Weight;46	fn create_item_nft(b: u32, ) -> Weight;47	fn create_item_fungible() -> Weight;48	fn create_item_refungible(b: u32, ) -> Weight;49	fn burn_item_nft() -> Weight;50	fn transfer_nft() -> Weight;51	fn transfer_fungible() -> Weight;52	fn transfer_refungible() -> Weight;53	fn approve_nft() -> Weight;54	fn transfer_from_nft() -> Weight;55	fn transfer_from_fungible() -> Weight;56	fn transfer_from_refungible() -> Weight;57	fn set_offchain_schema(b: u32, ) -> Weight;58	fn set_const_on_chain_schema(b: u32, ) -> Weight;59	fn set_variable_on_chain_schema(b: u32, ) -> Weight;60	fn set_variable_meta_data_nft(b: u32, ) -> Weight;61	fn set_schema_version() -> Weight;62	fn set_collection_limits() -> Weight;63}6465/// Weights for pallet_nft using the Substrate node and recommended hardware.66pub struct SubstrateWeight<T>(PhantomData<T>);67impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {68	fn create_collection() -> Weight {69		(25_851_000 as Weight)70			.saturating_add(T::DbWeight::get().reads(8 as Weight))71			.saturating_add(T::DbWeight::get().writes(6 as Weight))72	}73	fn destroy_collection() -> Weight {74		(28_737_000 as Weight)75			.saturating_add(T::DbWeight::get().reads(2 as Weight))76			.saturating_add(T::DbWeight::get().writes(4 as Weight))77	}78	fn add_to_white_list() -> Weight {79		(6_237_000 as Weight)80			.saturating_add(T::DbWeight::get().reads(1 as Weight))81			.saturating_add(T::DbWeight::get().writes(1 as Weight))82	}83	fn remove_from_white_list() -> Weight {84		(6_252_000 as Weight)85			.saturating_add(T::DbWeight::get().reads(1 as Weight))86			.saturating_add(T::DbWeight::get().writes(1 as Weight))87	}88	fn set_public_access_mode() -> Weight {89		(6_691_000 as Weight)90			.saturating_add(T::DbWeight::get().reads(1 as Weight))91			.saturating_add(T::DbWeight::get().writes(1 as Weight))92	}93	fn set_mint_permission() -> Weight {94		(6_630_000 as Weight)95			.saturating_add(T::DbWeight::get().reads(1 as Weight))96			.saturating_add(T::DbWeight::get().writes(1 as Weight))97	}98	fn change_collection_owner() -> Weight {99		(6_521_000 as Weight)100			.saturating_add(T::DbWeight::get().reads(1 as Weight))101			.saturating_add(T::DbWeight::get().writes(1 as Weight))102	}103	fn add_collection_admin() -> Weight {104		(8_057_000 as Weight)105			.saturating_add(T::DbWeight::get().reads(2 as Weight))106			.saturating_add(T::DbWeight::get().writes(1 as Weight))107	}108	fn remove_collection_admin() -> Weight {109		(8_307_000 as Weight)110			.saturating_add(T::DbWeight::get().reads(2 as Weight))111			.saturating_add(T::DbWeight::get().writes(1 as Weight))112	}113	fn set_collection_sponsor() -> Weight {114		(6_484_000 as Weight)115			.saturating_add(T::DbWeight::get().reads(1 as Weight))116			.saturating_add(T::DbWeight::get().writes(1 as Weight))117	}118	fn confirm_sponsorship() -> Weight {119		(6_530_000 as Weight)120			.saturating_add(T::DbWeight::get().reads(1 as Weight))121			.saturating_add(T::DbWeight::get().writes(1 as Weight))122	}123	fn remove_collection_sponsor() -> Weight {124		(6_733_000 as Weight)125			.saturating_add(T::DbWeight::get().reads(1 as Weight))126			.saturating_add(T::DbWeight::get().writes(1 as Weight))127	}128	fn create_item_nft(_b: u32, ) -> Weight {129		(167_909_000 as Weight)130			.saturating_add(T::DbWeight::get().reads(11 as Weight))131			.saturating_add(T::DbWeight::get().writes(8 as Weight))132	}133	fn create_item_fungible() -> Weight {134		(22_331_000 as Weight)135			.saturating_add(T::DbWeight::get().reads(9 as Weight))136			.saturating_add(T::DbWeight::get().writes(4 as Weight))137	}138	fn create_item_refungible(_b: u32, ) -> Weight {139		(26_293_000 as Weight)140			.saturating_add(T::DbWeight::get().reads(9 as Weight))141			.saturating_add(T::DbWeight::get().writes(7 as Weight))142	}143	fn burn_item_nft() -> Weight {144		(32_237_000 as Weight)145			.saturating_add(T::DbWeight::get().reads(9 as Weight))146			.saturating_add(T::DbWeight::get().writes(7 as Weight))147	}148	fn transfer_nft() -> Weight {149		(192_578_000 as Weight)150			.saturating_add(T::DbWeight::get().reads(14 as Weight))151			.saturating_add(T::DbWeight::get().writes(10 as Weight))152	}153	fn transfer_fungible() -> Weight {154		(170_749_000 as Weight)155			.saturating_add(T::DbWeight::get().reads(11 as Weight))156			.saturating_add(T::DbWeight::get().writes(7 as Weight))157	}158	fn transfer_refungible() -> Weight {159		(35_949_000 as Weight)160			.saturating_add(T::DbWeight::get().reads(10 as Weight))161			.saturating_add(T::DbWeight::get().writes(7 as Weight))162	}163	fn approve_nft() -> Weight {164		(169_825_000 as Weight)165			.saturating_add(T::DbWeight::get().reads(9 as Weight))166			.saturating_add(T::DbWeight::get().writes(4 as Weight))167	}168	fn transfer_from_nft() -> Weight {169		(197_912_000 as Weight)170			.saturating_add(T::DbWeight::get().reads(15 as Weight))171			.saturating_add(T::DbWeight::get().writes(11 as Weight))172	}173	fn transfer_from_fungible() -> Weight {174		(183_789_000 as Weight)175			.saturating_add(T::DbWeight::get().reads(12 as Weight))176			.saturating_add(T::DbWeight::get().writes(8 as Weight))177	}178	fn transfer_from_refungible() -> Weight {179		(37_149_000 as Weight)180			.saturating_add(T::DbWeight::get().reads(11 as Weight))181			.saturating_add(T::DbWeight::get().writes(8 as Weight))182	}183	fn set_offchain_schema(_b: u32, ) -> Weight {184		(6_435_000 as Weight)185			.saturating_add(T::DbWeight::get().reads(1 as Weight))186			.saturating_add(T::DbWeight::get().writes(1 as Weight))187	}188	fn set_const_on_chain_schema(_b: u32, ) -> Weight {189		(6_646_000 as Weight)190			.saturating_add(T::DbWeight::get().reads(1 as Weight))191			.saturating_add(T::DbWeight::get().writes(1 as Weight))192	}193	fn set_variable_on_chain_schema(_b: u32, ) -> Weight {194		(6_542_000 as Weight)195			.saturating_add(T::DbWeight::get().reads(1 as Weight))196			.saturating_add(T::DbWeight::get().writes(1 as Weight))197	}198	fn set_variable_meta_data_nft(_b: u32, ) -> Weight {199		(14_697_000 as Weight)200			.saturating_add(T::DbWeight::get().reads(2 as Weight))201			.saturating_add(T::DbWeight::get().writes(1 as Weight))202	}203	fn set_schema_version() -> Weight {204		(6_566_000 as Weight)205			.saturating_add(T::DbWeight::get().reads(1 as Weight))206			.saturating_add(T::DbWeight::get().writes(1 as Weight))207	}208	fn set_collection_limits() -> Weight {209		(6_349_000 as Weight)210			.saturating_add(T::DbWeight::get().reads(1 as Weight))211			.saturating_add(T::DbWeight::get().writes(1 as Weight))212	}213}214215// For backwards compatibility and tests216impl WeightInfo for () {217	fn create_collection() -> Weight {218		(25_851_000 as Weight)219			.saturating_add(RocksDbWeight::get().reads(8 as Weight))220			.saturating_add(RocksDbWeight::get().writes(6 as Weight))221	}222	fn destroy_collection() -> Weight {223		(28_737_000 as Weight)224			.saturating_add(RocksDbWeight::get().reads(2 as Weight))225			.saturating_add(RocksDbWeight::get().writes(4 as Weight))226	}227	fn add_to_white_list() -> Weight {228		(6_237_000 as Weight)229			.saturating_add(RocksDbWeight::get().reads(1 as Weight))230			.saturating_add(RocksDbWeight::get().writes(1 as Weight))231	}232	fn remove_from_white_list() -> Weight {233		(6_252_000 as Weight)234			.saturating_add(RocksDbWeight::get().reads(1 as Weight))235			.saturating_add(RocksDbWeight::get().writes(1 as Weight))236	}237	fn set_public_access_mode() -> Weight {238		(6_691_000 as Weight)239			.saturating_add(RocksDbWeight::get().reads(1 as Weight))240			.saturating_add(RocksDbWeight::get().writes(1 as Weight))241	}242	fn set_mint_permission() -> Weight {243		(6_630_000 as Weight)244			.saturating_add(RocksDbWeight::get().reads(1 as Weight))245			.saturating_add(RocksDbWeight::get().writes(1 as Weight))246	}247	fn change_collection_owner() -> Weight {248		(6_521_000 as Weight)249			.saturating_add(RocksDbWeight::get().reads(1 as Weight))250			.saturating_add(RocksDbWeight::get().writes(1 as Weight))251	}252	fn add_collection_admin() -> Weight {253		(8_057_000 as Weight)254			.saturating_add(RocksDbWeight::get().reads(2 as Weight))255			.saturating_add(RocksDbWeight::get().writes(1 as Weight))256	}257	fn remove_collection_admin() -> Weight {258		(8_307_000 as Weight)259			.saturating_add(RocksDbWeight::get().reads(2 as Weight))260			.saturating_add(RocksDbWeight::get().writes(1 as Weight))261	}262	fn set_collection_sponsor() -> Weight {263		(6_484_000 as Weight)264			.saturating_add(RocksDbWeight::get().reads(1 as Weight))265			.saturating_add(RocksDbWeight::get().writes(1 as Weight))266	}267	fn confirm_sponsorship() -> Weight {268		(6_530_000 as Weight)269			.saturating_add(RocksDbWeight::get().reads(1 as Weight))270			.saturating_add(RocksDbWeight::get().writes(1 as Weight))271	}272	fn remove_collection_sponsor() -> Weight {273		(6_733_000 as Weight)274			.saturating_add(RocksDbWeight::get().reads(1 as Weight))275			.saturating_add(RocksDbWeight::get().writes(1 as Weight))276	}277	fn create_item_nft(_b: u32, ) -> Weight {278		(167_909_000 as Weight)279			.saturating_add(RocksDbWeight::get().reads(11 as Weight))280			.saturating_add(RocksDbWeight::get().writes(8 as Weight))281	}282	fn create_item_fungible() -> Weight {283		(22_331_000 as Weight)284			.saturating_add(RocksDbWeight::get().reads(9 as Weight))285			.saturating_add(RocksDbWeight::get().writes(4 as Weight))286	}287	fn create_item_refungible(_b: u32, ) -> Weight {288		(26_293_000 as Weight)289			.saturating_add(RocksDbWeight::get().reads(9 as Weight))290			.saturating_add(RocksDbWeight::get().writes(7 as Weight))291	}292	fn burn_item_nft() -> Weight {293		(32_237_000 as Weight)294			.saturating_add(RocksDbWeight::get().reads(9 as Weight))295			.saturating_add(RocksDbWeight::get().writes(7 as Weight))296	}297	fn transfer_nft() -> Weight {298		(192_578_000 as Weight)299			.saturating_add(RocksDbWeight::get().reads(14 as Weight))300			.saturating_add(RocksDbWeight::get().writes(10 as Weight))301	}302	fn transfer_fungible() -> Weight {303		(170_749_000 as Weight)304			.saturating_add(RocksDbWeight::get().reads(11 as Weight))305			.saturating_add(RocksDbWeight::get().writes(7 as Weight))306	}307	fn transfer_refungible() -> Weight {308		(35_949_000 as Weight)309			.saturating_add(RocksDbWeight::get().reads(10 as Weight))310			.saturating_add(RocksDbWeight::get().writes(7 as Weight))311	}312	fn approve_nft() -> Weight {313		(169_825_000 as Weight)314			.saturating_add(RocksDbWeight::get().reads(9 as Weight))315			.saturating_add(RocksDbWeight::get().writes(4 as Weight))316	}317	fn transfer_from_nft() -> Weight {318		(197_912_000 as Weight)319			.saturating_add(RocksDbWeight::get().reads(15 as Weight))320			.saturating_add(RocksDbWeight::get().writes(11 as Weight))321	}322	fn transfer_from_fungible() -> Weight {323		(183_789_000 as Weight)324			.saturating_add(RocksDbWeight::get().reads(12 as Weight))325			.saturating_add(RocksDbWeight::get().writes(8 as Weight))326	}327	fn transfer_from_refungible() -> Weight {328		(37_149_000 as Weight)329			.saturating_add(RocksDbWeight::get().reads(11 as Weight))330			.saturating_add(RocksDbWeight::get().writes(8 as Weight))331	}332	fn set_offchain_schema(_b: u32, ) -> Weight {333		(6_435_000 as Weight)334			.saturating_add(RocksDbWeight::get().reads(1 as Weight))335			.saturating_add(RocksDbWeight::get().writes(1 as Weight))336	}337	fn set_const_on_chain_schema(_b: u32, ) -> Weight {338		(6_646_000 as Weight)339			.saturating_add(RocksDbWeight::get().reads(1 as Weight))340			.saturating_add(RocksDbWeight::get().writes(1 as Weight))341	}342	fn set_variable_on_chain_schema(_b: u32, ) -> Weight {343		(6_542_000 as Weight)344			.saturating_add(RocksDbWeight::get().reads(1 as Weight))345			.saturating_add(RocksDbWeight::get().writes(1 as Weight))346	}347	fn set_variable_meta_data_nft(_b: u32, ) -> Weight {348		(14_697_000 as Weight)349			.saturating_add(RocksDbWeight::get().reads(2 as Weight))350			.saturating_add(RocksDbWeight::get().writes(1 as Weight))351	}352	fn set_schema_version() -> Weight {353		(6_566_000 as Weight)354			.saturating_add(RocksDbWeight::get().reads(1 as Weight))355			.saturating_add(RocksDbWeight::get().writes(1 as Weight))356	}357	fn set_collection_limits() -> Weight {358		(6_349_000 as Weight)359			.saturating_add(RocksDbWeight::get().reads(1 as Weight))360			.saturating_add(RocksDbWeight::get().writes(1 as Weight))361	}362}