From 9ab00b15b2e98d008822fe6addaaad148f513bea Mon Sep 17 00:00:00 2001
From: Maksym H <1177472+mordamax@users.noreply.github.com>
Date: Tue, 28 Jan 2025 19:32:46 +0000
Subject: [PATCH] remove old bench & revert the frame-weight-template (#7362)

- remove old bench from cmd.py and left alias for backward compatibility
- reverted the frame-wight-template as the problem was that it umbrella
template wasn't picked correctly in the old benchmarks, in
frame-omni-bench it correctly identifies the dependencies and uses
correct template

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
---
 .github/scripts/cmd/cmd.py                    | 195 ++----------------
 .github/workflows/runtimes-matrix.json        |  28 ---
 substrate/.maintain/frame-weight-template.hbs |   3 +-
 substrate/frame/multisig/src/weights.rs       | 179 ++++++++--------
 4 files changed, 110 insertions(+), 295 deletions(-)

diff --git a/.github/scripts/cmd/cmd.py b/.github/scripts/cmd/cmd.py
index 2c017b7d0c3..79442b682e5 100755
--- a/.github/scripts/cmd/cmd.py
+++ b/.github/scripts/cmd/cmd.py
@@ -44,34 +44,6 @@ setup_logging()
 BENCH
 """
 
-bench_example = '''**Examples**:
- Runs all benchmarks
- %(prog)s
-
- Runs benchmarks for pallet_balances and pallet_multisig for all runtimes which have these pallets. **--quiet** makes it to output nothing to PR but reactions
- %(prog)s --pallet pallet_balances pallet_xcm_benchmarks::generic --quiet
-
- Runs bench for all pallets for westend runtime and fails fast on first failed benchmark
- %(prog)s --runtime westend --fail-fast
-
- Does not output anything and cleans up the previous bot's & author command triggering comments in PR
- %(prog)s --runtime westend rococo --pallet pallet_balances pallet_multisig --quiet --clean
-'''
-
-parser_bench = subparsers.add_parser('bench', help='Runs benchmarks (old CLI)', epilog=bench_example, formatter_class=argparse.RawDescriptionHelpFormatter)
-
-for arg, config in common_args.items():
-    parser_bench.add_argument(arg, **config)
-
-parser_bench.add_argument('--runtime', help='Runtime(s) space separated', choices=runtimeNames, nargs='*', default=runtimeNames)
-parser_bench.add_argument('--pallet', help='Pallet(s) space separated', nargs='*', default=[])
-parser_bench.add_argument('--fail-fast', help='Fail fast on first failed benchmark', action='store_true')
-
-
-"""
-BENCH OMNI
-"""
-
 bench_example = '''**Examples**:
  Runs all benchmarks 
  %(prog)s
@@ -86,14 +58,14 @@ bench_example = '''**Examples**:
  %(prog)s --runtime westend rococo --pallet pallet_balances pallet_multisig --quiet --clean
 '''
 
-parser_bench_old = subparsers.add_parser('bench-omni', help='Runs benchmarks (frame omni bencher)', epilog=bench_example, formatter_class=argparse.RawDescriptionHelpFormatter)
+parser_bench = subparsers.add_parser('bench', aliases=['bench-omni'], help='Runs benchmarks (frame omni bencher)', epilog=bench_example, formatter_class=argparse.RawDescriptionHelpFormatter)
 
 for arg, config in common_args.items():
-    parser_bench_old.add_argument(arg, **config)
+    parser_bench.add_argument(arg, **config)
 
-parser_bench_old.add_argument('--runtime', help='Runtime(s) space separated', choices=runtimeNames, nargs='*', default=runtimeNames)
-parser_bench_old.add_argument('--pallet', help='Pallet(s) space separated', nargs='*', default=[])
-parser_bench_old.add_argument('--fail-fast', help='Fail fast on first failed benchmark', action='store_true')
+parser_bench.add_argument('--runtime', help='Runtime(s) space separated', choices=runtimeNames, nargs='*', default=runtimeNames)
+parser_bench.add_argument('--pallet', help='Pallet(s) space separated', nargs='*', default=[])
+parser_bench.add_argument('--fail-fast', help='Fail fast on first failed benchmark', action='store_true')
 
 
 """
@@ -127,7 +99,7 @@ def main():
 
     print(f'args: {args}')
 
-    if args.command == 'bench-omni':
+    if args.command == 'bench' or args.command == 'bench-omni':
         runtime_pallets_map = {}
         failed_benchmarks = {}
         successful_benchmarks = {}
@@ -144,7 +116,14 @@ def main():
         for runtime in runtimesMatrix.values():
             build_command = f"forklift cargo build -p {runtime['package']} --profile {profile} --features={runtime['bench_features']}"
             print(f'-- building "{runtime["name"]}" with `{build_command}`')
-            os.system(build_command)
+            build_status = os.system(build_command)
+            if build_status != 0:
+                print_and_log(f'❌ Failed to build {runtime["name"]}')
+                if args.fail_fast:
+                    sys.exit(1)
+                else:
+                    continue
+
             print(f'-- listing pallets for benchmark for {runtime["name"]}')
             wasm_file = f"target/{profile}/wbuild/{runtime['package']}/{runtime['package'].replace('-', '_')}.wasm"
             list_command = f"frame-omni-bencher v1 benchmark pallet " \
@@ -219,12 +198,15 @@ def main():
                     # TODO: we can remove once all pallets in dev runtime are migrated to polkadot-sdk-frame
                     try:
                         uses_polkadot_sdk_frame = "true" in os.popen(f"cargo metadata --locked --format-version 1 --no-deps | jq -r '.packages[] | select(.name == \"{pallet.replace('_', '-')}\") | .dependencies | any(.name == \"polkadot-sdk-frame\")'").read()
+                        print(f'uses_polkadot_sdk_frame: {uses_polkadot_sdk_frame}')
                     # Empty output from the previous os.popen command
                     except StopIteration:
+                        print(f'Error: {pallet} not found in dev runtime')
                         uses_polkadot_sdk_frame = False
                     template = config['template']
                     if uses_polkadot_sdk_frame and re.match(r"frame-(:?umbrella-)?weight-template\.hbs", os.path.normpath(template).split(os.path.sep)[-1]):
                         template = "substrate/.maintain/frame-umbrella-weight-template.hbs"
+                    print(f'template: {template}')
                 else:
                     default_path = f"./{config['path']}/src/weights"
                     xcm_path = f"./{config['path']}/src/weights/xcm"
@@ -270,149 +252,6 @@ def main():
             print_and_log('✅ Successful benchmarks of runtimes/pallets:')
             for runtime, pallets in successful_benchmarks.items():
                 print_and_log(f'-- {runtime}: {pallets}')
-    
-    if args.command == 'bench':
-        runtime_pallets_map = {}
-        failed_benchmarks = {}
-        successful_benchmarks = {}
-
-        profile = "production"
-
-        print(f'Provided runtimes: {args.runtime}')
-        # convert to mapped dict
-        runtimesMatrix = list(filter(lambda x: x['name'] in args.runtime, runtimesMatrix))
-        runtimesMatrix = {x['name']: x for x in runtimesMatrix}
-        print(f'Filtered out runtimes: {runtimesMatrix}')
-
-        # loop over remaining runtimes to collect available pallets
-        for runtime in runtimesMatrix.values():
-            build_command = f"forklift cargo build -p {runtime['old_package']} --profile {profile} --features={runtime['bench_features']} --locked"
-            print(f'-- building {runtime["name"]} with `{build_command}`')
-            os.system(build_command)
-            
-            chain = runtime['name'] if runtime['name'] == 'dev' else f"{runtime['name']}-dev"
-
-            machine_test = f"target/{profile}/{runtime['old_bin']} benchmark machine --chain={chain}"
-            print(f"Running machine test for `{machine_test}`")
-            os.system(machine_test)
-
-            print(f'-- listing pallets for benchmark for {chain}')
-            list_command = f"target/{profile}/{runtime['old_bin']} " \
-                f"benchmark pallet " \
-                f"--no-csv-header " \
-                f"--no-storage-info " \
-                f"--no-min-squares " \
-                f"--no-median-slopes " \
-                f"--all " \
-                f"--list " \
-                f"--chain={chain}"
-            print(f'-- running: {list_command}')
-            output = os.popen(list_command).read()
-            raw_pallets = output.strip().split('\n')
-
-            all_pallets = set()
-            for pallet in raw_pallets:
-                if pallet:
-                    all_pallets.add(pallet.split(',')[0].strip())
-
-            pallets = list(all_pallets)
-            print(f'Pallets in {runtime["name"]}: {pallets}')
-            runtime_pallets_map[runtime['name']] = pallets
-
-        print(f'\n')
-
-        # filter out only the specified pallets from collected runtimes/pallets
-        if args.pallet:
-            print(f'Pallets: {args.pallet}')
-            new_pallets_map = {}
-            # keep only specified pallets if they exist in the runtime
-            for runtime in runtime_pallets_map:
-                if set(args.pallet).issubset(set(runtime_pallets_map[runtime])):
-                    new_pallets_map[runtime] = args.pallet
-
-            runtime_pallets_map = new_pallets_map
-
-        print(f'Filtered out runtimes & pallets: {runtime_pallets_map}\n')
-
-        if not runtime_pallets_map:
-            if args.pallet and not args.runtime:
-                print(f"No pallets {args.pallet} found in any runtime")
-            elif args.runtime and not args.pallet:
-                print(f"{args.runtime} runtime does not have any pallets")
-            elif args.runtime and args.pallet:
-                print(f"No pallets {args.pallet} found in {args.runtime}")
-            else:
-                print('No runtimes found')
-            sys.exit(1)
-
-        for runtime in runtime_pallets_map:
-            for pallet in runtime_pallets_map[runtime]:
-                config = runtimesMatrix[runtime]
-                header_path = os.path.abspath(config['header'])
-                template = None
-
-                chain = config['name'] if runtime == 'dev' else f"{config['name']}-dev"
-
-                print(f'-- config: {config}')
-                if runtime == 'dev':
-                    # to support sub-modules (https://github.com/paritytech/command-bot/issues/275)
-                    search_manifest_path = f"cargo metadata --locked --format-version 1 --no-deps | jq -r '.packages[] | select(.name == \"{pallet.replace('_', '-')}\") | .manifest_path'"
-                    print(f'-- running: {search_manifest_path}')
-                    manifest_path = os.popen(search_manifest_path).read()
-                    if not manifest_path:
-                        print(f'-- pallet {pallet} not found in dev runtime')
-                        if args.fail_fast:
-                            print_and_log(f'Error: {pallet} not found in dev runtime')
-                            sys.exit(1)
-                    package_dir = os.path.dirname(manifest_path)
-                    print(f'-- package_dir: {package_dir}')
-                    print(f'-- manifest_path: {manifest_path}')
-                    output_path = os.path.join(package_dir, "src", "weights.rs")
-                    template = config['template']
-                else:
-                    default_path = f"./{config['path']}/src/weights"
-                    xcm_path = f"./{config['path']}/src/weights/xcm"
-                    output_path = default_path
-                    if pallet.startswith("pallet_xcm_benchmarks"):
-                        template = config['template']
-                        output_path = xcm_path
-
-                print(f'-- benchmarking {pallet} in {runtime} into {output_path}')
-                cmd = f"target/{profile}/{config['old_bin']} benchmark pallet " \
-                    f"--extrinsic=* " \
-                    f"--chain={chain} " \
-                    f"--pallet={pallet} " \
-                    f"--header={header_path} " \
-                    f"--output={output_path} " \
-                    f"--wasm-execution=compiled " \
-                    f"--steps=50 " \
-                    f"--repeat=20 " \
-                    f"--heap-pages=4096 " \
-                    f"{f'--template={template} ' if template else ''}" \
-                    f"--no-storage-info --no-min-squares --no-median-slopes "
-                print(f'-- Running: {cmd} \n')
-                status = os.system(cmd)
-
-                if status != 0 and args.fail_fast:
-                    print_and_log(f'❌ Failed to benchmark {pallet} in {runtime}')
-                    sys.exit(1)
-
-                # Otherwise collect failed benchmarks and print them at the end
-                # push failed pallets to failed_benchmarks
-                if status != 0:
-                    failed_benchmarks[f'{runtime}'] = failed_benchmarks.get(f'{runtime}', []) + [pallet]
-                else:
-                    successful_benchmarks[f'{runtime}'] = successful_benchmarks.get(f'{runtime}', []) + [pallet]
-
-        if failed_benchmarks:
-            print_and_log('❌ Failed benchmarks of runtimes/pallets:')
-            for runtime, pallets in failed_benchmarks.items():
-                print_and_log(f'-- {runtime}: {pallets}')
-
-        if successful_benchmarks:
-            print_and_log('✅ Successful benchmarks of runtimes/pallets:')
-            for runtime, pallets in successful_benchmarks.items():
-                print_and_log(f'-- {runtime}: {pallets}')
 
     elif args.command == 'fmt':
         command = f"cargo +nightly fmt"
diff --git a/.github/workflows/runtimes-matrix.json b/.github/workflows/runtimes-matrix.json
index ff16b739724..747b2bb4ac8 100644
--- a/.github/workflows/runtimes-matrix.json
+++ b/.github/workflows/runtimes-matrix.json
@@ -8,8 +8,6 @@
     "bench_features": "runtime-benchmarks",
     "bench_flags": "--genesis-builder-policy=none --exclude-pallets=pallet_xcm,pallet_xcm_benchmarks::fungible,pallet_xcm_benchmarks::generic,pallet_nomination_pools,pallet_remark,pallet_transaction_storage",
     "uri": null,
-    "old_package": "staging-node-cli",
-    "old_bin": "substrate-node",
     "is_relay": false
   },
   {
@@ -21,8 +19,6 @@
     "bench_flags": "",
     "bench_features": "runtime-benchmarks",
     "uri": "wss://try-runtime-westend.polkadot.io:443",
-    "old_package": "polkadot",
-    "old_bin": "polkadot",
     "is_relay": true
   },
   {
@@ -34,8 +30,6 @@
     "bench_features": "runtime-benchmarks",
     "bench_flags": "",
     "uri": "wss://try-runtime-rococo.polkadot.io:443",
-    "old_package": "polkadot",
-    "old_bin": "polkadot",
     "is_relay": true
   },
   {
@@ -47,8 +41,6 @@
     "bench_features": "runtime-benchmarks",
     "bench_flags": "",
     "uri": "wss://westend-asset-hub-rpc.polkadot.io:443",
-    "old_package": "polkadot-parachain-bin",
-    "old_bin": "polkadot-parachain",
     "is_relay": false
   },
   {
@@ -60,8 +52,6 @@
     "bench_features": "runtime-benchmarks",
     "bench_flags": "",
     "uri": "wss://rococo-asset-hub-rpc.polkadot.io:443",
-    "old_package": "polkadot-parachain-bin",
-    "old_bin": "polkadot-parachain",
     "is_relay": false
   },
   {
@@ -73,8 +63,6 @@
     "bench_features": "runtime-benchmarks",
     "bench_flags": "",
     "uri": "wss://rococo-bridge-hub-rpc.polkadot.io:443",
-    "old_package": "polkadot-parachain-bin",
-    "old_bin": "polkadot-parachain",
     "is_relay": false
   },
   {
@@ -86,8 +74,6 @@
     "bench_features": "runtime-benchmarks",
     "bench_flags": "",
     "uri": "wss://westend-bridge-hub-rpc.polkadot.io:443",
-    "old_package": "polkadot-parachain-bin",
-    "old_bin": "polkadot-parachain",
     "is_relay": false
   },
   {
@@ -99,8 +85,6 @@
     "bench_features": "runtime-benchmarks",
     "bench_flags": "",
     "uri": "wss://westend-collectives-rpc.polkadot.io:443",
-    "old_package": "polkadot-parachain-bin",
-    "old_bin": "polkadot-parachain",
     "is_relay": false
   },
   {
@@ -112,8 +96,6 @@
     "bench_features": "runtime-benchmarks",
     "bench_flags": "--genesis-builder-policy=none --exclude-pallets=pallet_xcm",
     "uri": "wss://rococo-contracts-rpc.polkadot.io:443",
-    "old_package": "polkadot-parachain-bin",
-    "old_bin": "polkadot-parachain",
     "is_relay": false
   },
   {
@@ -125,8 +107,6 @@
     "bench_features": "runtime-benchmarks",
     "bench_flags": "--genesis-builder-policy=none --exclude-pallets=pallet_xcm,pallet_xcm_benchmarks::fungible,pallet_xcm_benchmarks::generic",
     "uri": "wss://rococo-coretime-rpc.polkadot.io:443",
-    "old_package": "polkadot-parachain-bin",
-    "old_bin": "polkadot-parachain",
     "is_relay": false
   },
   {
@@ -138,8 +118,6 @@
     "bench_features": "runtime-benchmarks",
     "bench_flags": "--genesis-builder-policy=none --exclude-pallets=pallet_xcm,pallet_xcm_benchmarks::fungible,pallet_xcm_benchmarks::generic",
     "uri": "wss://westend-coretime-rpc.polkadot.io:443",
-    "old_package": "polkadot-parachain-bin",
-    "old_bin": "polkadot-parachain",
     "is_relay": false
   },
   {
@@ -151,8 +129,6 @@
     "bench_features": "runtime-benchmarks",
     "bench_flags": "--genesis-builder-policy=none",
     "uri": null,
-    "old_package": "polkadot-parachain-bin",
-    "old_bin": "polkadot-parachain",
     "is_relay": false
   },
   {
@@ -164,8 +140,6 @@
     "bench_features": "runtime-benchmarks",
     "bench_flags": "--genesis-builder-policy=none --exclude-pallets=pallet_xcm,pallet_xcm_benchmarks::fungible,pallet_xcm_benchmarks::generic",
     "uri": "wss://rococo-people-rpc.polkadot.io:443",
-    "old_package": "polkadot-parachain-bin",
-    "old_bin": "polkadot-parachain",
     "is_relay": false
   },
   {
@@ -177,8 +151,6 @@
     "bench_features": "runtime-benchmarks",
     "bench_flags": "--genesis-builder-policy=none --exclude-pallets=pallet_xcm,pallet_xcm_benchmarks::fungible,pallet_xcm_benchmarks::generic",
     "uri": "wss://westend-people-rpc.polkadot.io:443",
-    "old_package": "polkadot-parachain-bin",
-    "old_bin": "polkadot-parachain",
     "is_relay": false
   }
 ]
diff --git a/substrate/.maintain/frame-weight-template.hbs b/substrate/.maintain/frame-weight-template.hbs
index b174823b384..ec9eee205ce 100644
--- a/substrate/.maintain/frame-weight-template.hbs
+++ b/substrate/.maintain/frame-weight-template.hbs
@@ -17,7 +17,8 @@
 #![allow(unused_imports)]
 #![allow(missing_docs)]
 
-use frame::weights_prelude::*;
+use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};
+use core::marker::PhantomData;
 
 /// Weight functions needed for `{{pallet}}`.
 pub trait WeightInfo {
diff --git a/substrate/frame/multisig/src/weights.rs b/substrate/frame/multisig/src/weights.rs
index 1c91734e618..0f8167a07a1 100644
--- a/substrate/frame/multisig/src/weights.rs
+++ b/substrate/frame/multisig/src/weights.rs
@@ -18,17 +18,18 @@
 //! Autogenerated weights for `pallet_multisig`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2025-01-23, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2025-01-28, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
-//! HOSTNAME: `25968fd2c26d`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
-//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: `1024`
+//! HOSTNAME: `fff8f38555b9`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
+//! WASM-EXECUTION: `Compiled`, CHAIN: `None`, DB CACHE: `1024`
 
 // Executed Command:
-// target/production/substrate-node
+// frame-omni-bencher
+// v1
 // benchmark
 // pallet
 // --extrinsic=*
-// --chain=dev
+// --runtime=target/production/wbuild/kitchensink-runtime/kitchensink_runtime.wasm
 // --pallet=pallet_multisig
 // --header=/__w/polkadot-sdk/polkadot-sdk/substrate/HEADER-APACHE2
 // --output=/__w/polkadot-sdk/polkadot-sdk/substrate/frame/multisig/src/weights.rs
@@ -36,10 +37,12 @@
 // --steps=50
 // --repeat=20
 // --heap-pages=4096
-// --template=substrate/.maintain/frame-weight-template.hbs
+// --template=substrate/.maintain/frame-umbrella-weight-template.hbs
 // --no-storage-info
 // --no-min-squares
 // --no-median-slopes
+// --genesis-builder-policy=none
+// --exclude-pallets=pallet_xcm,pallet_xcm_benchmarks::fungible,pallet_xcm_benchmarks::generic,pallet_nomination_pools,pallet_remark,pallet_transaction_storage
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -69,12 +72,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `z` is `[0, 10000]`.
 	fn as_multi_threshold_1(z: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `145`
+		//  Measured:  `0`
 		//  Estimated: `3997`
-		// Minimum execution time: 28_800_000 picoseconds.
-		Weight::from_parts(30_130_161, 3997)
-			// Standard Error: 18
-			.saturating_add(Weight::from_parts(551, 0).saturating_mul(z.into()))
+		// Minimum execution time: 18_665_000 picoseconds.
+		Weight::from_parts(19_157_181, 3997)
+			// Standard Error: 6
+			.saturating_add(Weight::from_parts(590, 0).saturating_mul(z.into()))
 			.saturating_add(T::DbWeight::get().reads(2_u64))
 	}
 	/// Storage: `Multisig::Multisigs` (r:1 w:1)
@@ -83,14 +86,14 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `z` is `[0, 10000]`.
 	fn as_multi_create(s: u32, z: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `334 + s * (2 ±0)`
+		//  Measured:  `229 + s * (2 ±0)`
 		//  Estimated: `6811`
-		// Minimum execution time: 51_467_000 picoseconds.
-		Weight::from_parts(38_610_296, 6811)
-			// Standard Error: 1_796
-			.saturating_add(Weight::from_parts(161_251, 0).saturating_mul(s.into()))
-			// Standard Error: 17
-			.saturating_add(Weight::from_parts(2_068, 0).saturating_mul(z.into()))
+		// Minimum execution time: 42_388_000 picoseconds.
+		Weight::from_parts(29_499_967, 6811)
+			// Standard Error: 1_563
+			.saturating_add(Weight::from_parts(145_538, 0).saturating_mul(s.into()))
+			// Standard Error: 15
+			.saturating_add(Weight::from_parts(2_016, 0).saturating_mul(z.into()))
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 			.saturating_add(T::DbWeight::get().writes(1_u64))
 	}
@@ -100,14 +103,14 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `z` is `[0, 10000]`.
 	fn as_multi_approve(s: u32, z: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `353`
+		//  Measured:  `185`
 		//  Estimated: `6811`
-		// Minimum execution time: 36_208_000 picoseconds.
-		Weight::from_parts(24_694_507, 6811)
-			// Standard Error: 1_430
-			.saturating_add(Weight::from_parts(134_263, 0).saturating_mul(s.into()))
-			// Standard Error: 14
-			.saturating_add(Weight::from_parts(2_021, 0).saturating_mul(z.into()))
+		// Minimum execution time: 27_231_000 picoseconds.
+		Weight::from_parts(16_755_689, 6811)
+			// Standard Error: 866
+			.saturating_add(Weight::from_parts(119_094, 0).saturating_mul(s.into()))
+			// Standard Error: 8
+			.saturating_add(Weight::from_parts(1_927, 0).saturating_mul(z.into()))
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 			.saturating_add(T::DbWeight::get().writes(1_u64))
 	}
@@ -123,14 +126,14 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `z` is `[0, 10000]`.
 	fn as_multi_complete(s: u32, z: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `604 + s * (33 ±0)`
+		//  Measured:  `288 + s * (33 ±0)`
 		//  Estimated: `6811`
-		// Minimum execution time: 65_217_000 picoseconds.
-		Weight::from_parts(48_235_573, 6811)
-			// Standard Error: 2_841
-			.saturating_add(Weight::from_parts(205_077, 0).saturating_mul(s.into()))
-			// Standard Error: 27
-			.saturating_add(Weight::from_parts(2_298, 0).saturating_mul(z.into()))
+		// Minimum execution time: 50_448_000 picoseconds.
+		Weight::from_parts(34_504_261, 6811)
+			// Standard Error: 2_070
+			.saturating_add(Weight::from_parts(189_586, 0).saturating_mul(s.into()))
+			// Standard Error: 20
+			.saturating_add(Weight::from_parts(2_116, 0).saturating_mul(z.into()))
 			.saturating_add(T::DbWeight::get().reads(4_u64))
 			.saturating_add(T::DbWeight::get().writes(2_u64))
 	}
@@ -139,12 +142,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `s` is `[2, 100]`.
 	fn approve_as_multi_create(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `334 + s * (2 ±0)`
+		//  Measured:  `233 + s * (2 ±0)`
 		//  Estimated: `6811`
-		// Minimum execution time: 35_727_000 picoseconds.
-		Weight::from_parts(37_329_524, 6811)
-			// Standard Error: 1_814
-			.saturating_add(Weight::from_parts(157_471, 0).saturating_mul(s.into()))
+		// Minimum execution time: 26_020_000 picoseconds.
+		Weight::from_parts(28_229_601, 6811)
+			// Standard Error: 1_282
+			.saturating_add(Weight::from_parts(133_221, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 			.saturating_add(T::DbWeight::get().writes(1_u64))
 	}
@@ -153,12 +156,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `s` is `[2, 100]`.
 	fn approve_as_multi_approve(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `353`
+		//  Measured:  `185`
 		//  Estimated: `6811`
-		// Minimum execution time: 21_623_000 picoseconds.
-		Weight::from_parts(22_601_251, 6811)
-			// Standard Error: 963
-			.saturating_add(Weight::from_parts(139_320, 0).saturating_mul(s.into()))
+		// Minimum execution time: 13_660_000 picoseconds.
+		Weight::from_parts(14_317_629, 6811)
+			// Standard Error: 1_188
+			.saturating_add(Weight::from_parts(125_599, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 			.saturating_add(T::DbWeight::get().writes(1_u64))
 	}
@@ -167,12 +170,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `s` is `[2, 100]`.
 	fn cancel_as_multi(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `525 + s * (1 ±0)`
+		//  Measured:  `357 + s * (1 ±0)`
 		//  Estimated: `6811`
-		// Minimum execution time: 36_801_000 picoseconds.
-		Weight::from_parts(37_578_412, 6811)
-			// Standard Error: 1_580
-			.saturating_add(Weight::from_parts(159_580, 0).saturating_mul(s.into()))
+		// Minimum execution time: 27_827_000 picoseconds.
+		Weight::from_parts(28_980_511, 6811)
+			// Standard Error: 822
+			.saturating_add(Weight::from_parts(130_315, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 			.saturating_add(T::DbWeight::get().writes(1_u64))
 	}
@@ -187,12 +190,12 @@ impl WeightInfo for () {
 	/// The range of component `z` is `[0, 10000]`.
 	fn as_multi_threshold_1(z: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `145`
+		//  Measured:  `0`
 		//  Estimated: `3997`
-		// Minimum execution time: 28_800_000 picoseconds.
-		Weight::from_parts(30_130_161, 3997)
-			// Standard Error: 18
-			.saturating_add(Weight::from_parts(551, 0).saturating_mul(z.into()))
+		// Minimum execution time: 18_665_000 picoseconds.
+		Weight::from_parts(19_157_181, 3997)
+			// Standard Error: 6
+			.saturating_add(Weight::from_parts(590, 0).saturating_mul(z.into()))
 			.saturating_add(RocksDbWeight::get().reads(2_u64))
 	}
 	/// Storage: `Multisig::Multisigs` (r:1 w:1)
@@ -201,14 +204,14 @@ impl WeightInfo for () {
 	/// The range of component `z` is `[0, 10000]`.
 	fn as_multi_create(s: u32, z: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `334 + s * (2 ±0)`
+		//  Measured:  `229 + s * (2 ±0)`
 		//  Estimated: `6811`
-		// Minimum execution time: 51_467_000 picoseconds.
-		Weight::from_parts(38_610_296, 6811)
-			// Standard Error: 1_796
-			.saturating_add(Weight::from_parts(161_251, 0).saturating_mul(s.into()))
-			// Standard Error: 17
-			.saturating_add(Weight::from_parts(2_068, 0).saturating_mul(z.into()))
+		// Minimum execution time: 42_388_000 picoseconds.
+		Weight::from_parts(29_499_967, 6811)
+			// Standard Error: 1_563
+			.saturating_add(Weight::from_parts(145_538, 0).saturating_mul(s.into()))
+			// Standard Error: 15
+			.saturating_add(Weight::from_parts(2_016, 0).saturating_mul(z.into()))
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 			.saturating_add(RocksDbWeight::get().writes(1_u64))
 	}
@@ -218,14 +221,14 @@ impl WeightInfo for () {
 	/// The range of component `z` is `[0, 10000]`.
 	fn as_multi_approve(s: u32, z: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `353`
+		//  Measured:  `185`
 		//  Estimated: `6811`
-		// Minimum execution time: 36_208_000 picoseconds.
-		Weight::from_parts(24_694_507, 6811)
-			// Standard Error: 1_430
-			.saturating_add(Weight::from_parts(134_263, 0).saturating_mul(s.into()))
-			// Standard Error: 14
-			.saturating_add(Weight::from_parts(2_021, 0).saturating_mul(z.into()))
+		// Minimum execution time: 27_231_000 picoseconds.
+		Weight::from_parts(16_755_689, 6811)
+			// Standard Error: 866
+			.saturating_add(Weight::from_parts(119_094, 0).saturating_mul(s.into()))
+			// Standard Error: 8
+			.saturating_add(Weight::from_parts(1_927, 0).saturating_mul(z.into()))
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 			.saturating_add(RocksDbWeight::get().writes(1_u64))
 	}
@@ -241,14 +244,14 @@ impl WeightInfo for () {
 	/// The range of component `z` is `[0, 10000]`.
 	fn as_multi_complete(s: u32, z: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `604 + s * (33 ±0)`
+		//  Measured:  `288 + s * (33 ±0)`
 		//  Estimated: `6811`
-		// Minimum execution time: 65_217_000 picoseconds.
-		Weight::from_parts(48_235_573, 6811)
-			// Standard Error: 2_841
-			.saturating_add(Weight::from_parts(205_077, 0).saturating_mul(s.into()))
-			// Standard Error: 27
-			.saturating_add(Weight::from_parts(2_298, 0).saturating_mul(z.into()))
+		// Minimum execution time: 50_448_000 picoseconds.
+		Weight::from_parts(34_504_261, 6811)
+			// Standard Error: 2_070
+			.saturating_add(Weight::from_parts(189_586, 0).saturating_mul(s.into()))
+			// Standard Error: 20
+			.saturating_add(Weight::from_parts(2_116, 0).saturating_mul(z.into()))
 			.saturating_add(RocksDbWeight::get().reads(4_u64))
 			.saturating_add(RocksDbWeight::get().writes(2_u64))
 	}
@@ -257,12 +260,12 @@ impl WeightInfo for () {
 	/// The range of component `s` is `[2, 100]`.
 	fn approve_as_multi_create(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `334 + s * (2 ±0)`
+		//  Measured:  `233 + s * (2 ±0)`
 		//  Estimated: `6811`
-		// Minimum execution time: 35_727_000 picoseconds.
-		Weight::from_parts(37_329_524, 6811)
-			// Standard Error: 1_814
-			.saturating_add(Weight::from_parts(157_471, 0).saturating_mul(s.into()))
+		// Minimum execution time: 26_020_000 picoseconds.
+		Weight::from_parts(28_229_601, 6811)
+			// Standard Error: 1_282
+			.saturating_add(Weight::from_parts(133_221, 0).saturating_mul(s.into()))
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 			.saturating_add(RocksDbWeight::get().writes(1_u64))
 	}
@@ -271,12 +274,12 @@ impl WeightInfo for () {
 	/// The range of component `s` is `[2, 100]`.
 	fn approve_as_multi_approve(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `353`
+		//  Measured:  `185`
 		//  Estimated: `6811`
-		// Minimum execution time: 21_623_000 picoseconds.
-		Weight::from_parts(22_601_251, 6811)
-			// Standard Error: 963
-			.saturating_add(Weight::from_parts(139_320, 0).saturating_mul(s.into()))
+		// Minimum execution time: 13_660_000 picoseconds.
+		Weight::from_parts(14_317_629, 6811)
+			// Standard Error: 1_188
+			.saturating_add(Weight::from_parts(125_599, 0).saturating_mul(s.into()))
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 			.saturating_add(RocksDbWeight::get().writes(1_u64))
 	}
@@ -285,12 +288,12 @@ impl WeightInfo for () {
 	/// The range of component `s` is `[2, 100]`.
 	fn cancel_as_multi(s: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `525 + s * (1 ±0)`
+		//  Measured:  `357 + s * (1 ±0)`
 		//  Estimated: `6811`
-		// Minimum execution time: 36_801_000 picoseconds.
-		Weight::from_parts(37_578_412, 6811)
-			// Standard Error: 1_580
-			.saturating_add(Weight::from_parts(159_580, 0).saturating_mul(s.into()))
+		// Minimum execution time: 27_827_000 picoseconds.
+		Weight::from_parts(28_980_511, 6811)
+			// Standard Error: 822
+			.saturating_add(Weight::from_parts(130_315, 0).saturating_mul(s.into()))
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 			.saturating_add(RocksDbWeight::get().writes(1_u64))
 	}
-- 
GitLab