From 741171436885d8400798da9b847edc15b32accdf Mon Sep 17 00:00:00 2001 From: Alessandro Siniscalchi Date: Fri, 5 Apr 2024 16:46:33 +0200 Subject: [PATCH] [parachain-template] benchmarks into `mod benchmarks` (#3818) This PR introduces a dedicated module for benchmarks within the parachain runtime. By segregating benchmarks into their own module, we achieve a cleaner project structure and improved readability, facilitating easier maintenance and updates. ### Key Changes: - **New Benchmarks Module**: A new file `benchmarks.rs` is added, encapsulating the benchmarking code for various pallets. - **Refactoring `lib.rs`**: The main runtime library file (`lib.rs`) has been updated to reflect the extraction of benchmark definitions. By moving these definitions to `benchmarks.rs`, we reduce clutter in `lib.rs`, streamlining the runtime's core logic and configuration. ### Benefits of This Refactoring: - **Focused Benchmarking**: Developers can now easily locate and modify benchmarks without navigating through the core runtime logic, enabling targeted performance improvements. - **Cleaner Codebase**: Segregating benchmarks from the main runtime logic helps maintain a clean, well-organized codebase, simplifying navigation and maintenance. - **Scalability**: As the parachain evolves, adding or updating benchmarks becomes more straightforward, supporting scalability and adaptability of the runtime. ### Summary of Changes: - Created `benchmarks.rs` to house the benchmarking suite. - Streamlined `lib.rs` by removing the inlined benchmark definitions and linking to the new benchmarks module. --------- Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> --- templates/parachain/runtime/src/benchmarks.rs | 36 +++++++++++++++++++ templates/parachain/runtime/src/lib.rs | 18 ++-------- 2 files changed, 39 insertions(+), 15 deletions(-) create mode 100644 templates/parachain/runtime/src/benchmarks.rs diff --git a/templates/parachain/runtime/src/benchmarks.rs b/templates/parachain/runtime/src/benchmarks.rs new file mode 100644 index 0000000000000..9fbf1ad82bdb8 --- /dev/null +++ b/templates/parachain/runtime/src/benchmarks.rs @@ -0,0 +1,36 @@ +// This is free and unencumbered software released into the public domain. +// +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. +// +// In jurisdictions that recognize copyright laws, the author or authors +// of this software dedicate any and all copyright interest in the +// software to the public domain. We make this dedication for the benefit +// of the public at large and to the detriment of our heirs and +// successors. We intend this dedication to be an overt act of +// relinquishment in perpetuity of all present and future rights to this +// software under copyright law. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// +// For more information, please refer to + +frame_benchmarking::define_benchmarks!( + [frame_system, SystemBench::] + [pallet_balances, Balances] + [pallet_session, SessionBench::] + [pallet_timestamp, Timestamp] + [pallet_message_queue, MessageQueue] + [pallet_sudo, Sudo] + [pallet_collator_selection, CollatorSelection] + [cumulus_pallet_parachain_system, ParachainSystem] + [cumulus_pallet_xcmp_queue, XcmpQueue] +); diff --git a/templates/parachain/runtime/src/lib.rs b/templates/parachain/runtime/src/lib.rs index e2da9309ecc76..5bfd6f290c1b9 100644 --- a/templates/parachain/runtime/src/lib.rs +++ b/templates/parachain/runtime/src/lib.rs @@ -255,22 +255,10 @@ construct_runtime!( } ); -#[cfg(feature = "runtime-benchmarks")] -mod benches { - frame_benchmarking::define_benchmarks!( - [frame_system, SystemBench::] - [pallet_balances, Balances] - [pallet_session, SessionBench::] - [pallet_timestamp, Timestamp] - [pallet_message_queue, MessageQueue] - [pallet_sudo, Sudo] - [pallet_collator_selection, CollatorSelection] - [cumulus_pallet_parachain_system, ParachainSystem] - [cumulus_pallet_xcmp_queue, XcmpQueue] - ); -} - cumulus_pallet_parachain_system::register_validate_block! { Runtime = Runtime, BlockExecutor = cumulus_pallet_aura_ext::BlockExecutor::, } + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarks;