This repository was archived by the owner on Nov 15, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Benchmarking pallet-example #8301
Merged
Merged
Changes from all commits
Commits
Show all changes
22 commits
Select commit
Hold shift + click to select a range
34853d2
Trying to benchmark pallet-example
jimmychu0807 19ff8c4
added the weights info in function
jimmychu0807 6e5902a
updated naming
jimmychu0807 c4c0376
updated with benchmarking and weight
jimmychu0807 86a3333
Merge branch 'master' into jc/example-benchmarking
jimmychu0807 2a3ea00
Updated test for pallet-example
jimmychu0807 3d68f86
adding weights.rs benchmarked in release mode
jimmychu0807 c436b14
Removed pallet-example from node-runtime
jimmychu0807 3ab9102
adjusted
jimmychu0807 8d2cdf9
modification based on peer comments
jimmychu0807 abd4507
updated so far
jimmychu0807 ef98f05
Merge branch 'master' into jc/example-benchmarking
jimmychu0807 7614873
updated
jimmychu0807 911fdcc
updated
jimmychu0807 a291e13
updated code
jimmychu0807 612cde9
Added explanation on impl_benchmark_test_suite! macro
jimmychu0807 f4ff4f7
Remove pallet-example from runtime
jimmychu0807 8c66979
Merge remote-tracking branch 'gh-parity/master' into jc/example-bench…
jimmychu0807 a103aca
rm pallet-example
jimmychu0807 f28e430
Update frame/example/src/benchmarking.rs
a697b9a
Merge remote-tracking branch 'gh-parity/master' into jc/example-bench…
jimmychu0807 60b614d
additional comment on manually configuring weight
jimmychu0807 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,76 @@ | ||
| // This file is part of Substrate. | ||
|
|
||
| // Copyright (C) 2019-2021 Parity Technologies (UK) Ltd. | ||
| // SPDX-License-Identifier: Apache-2.0 | ||
|
|
||
| // Licensed under the Apache License, Version 2.0 (the "License"); | ||
| // you may not use this file except in compliance with the License. | ||
| // You may obtain a copy of the License at | ||
| // | ||
| // http://www.apache.org/licenses/LICENSE-2.0 | ||
| // | ||
| // Unless required by applicable law or agreed to in writing, software | ||
| // distributed under the License is distributed on an "AS IS" BASIS, | ||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| // See the License for the specific language governing permissions and | ||
| // limitations under the License. | ||
|
|
||
| //! Benchmarking for pallet-example. | ||
|
|
||
| #![cfg(feature = "runtime-benchmarks")] | ||
|
|
||
| use crate::*; | ||
| use frame_benchmarking::{benchmarks, whitelisted_caller, impl_benchmark_test_suite}; | ||
| use frame_system::RawOrigin; | ||
|
|
||
| // To actually run this benchmark on pallet-example, we need to put this pallet into the | ||
jimmychu0807 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| // runtime and compile it with `runtime-benchmarks` feature. The detail procedures are | ||
| // documented at: | ||
| // https://substrate.dev/docs/en/knowledgebase/runtime/benchmarking#how-to-benchmark | ||
| // | ||
| // The auto-generated weight estimate of this pallet is copied over to the `weights.rs` file. | ||
| // The exact command of how the estimate generated is printed at the top of the file. | ||
|
|
||
| // Details on using the benchmarks macro can be seen at: | ||
| // https://substrate.dev/rustdocs/v3.0.0/frame_benchmarking/macro.benchmarks.html | ||
| benchmarks!{ | ||
| // This will measure the execution time of `set_dummy` for b in [1..1000] range. | ||
| set_dummy_benchmark { | ||
| // This is the benchmark setup phase | ||
| let b in 1 .. 1000; | ||
| }: set_dummy(RawOrigin::Root, b.into()) // The execution phase is just running `set_dummy` extrinsic call | ||
| verify { | ||
jimmychu0807 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| // This is the optional benchmark verification phase, asserting certain states. | ||
| assert_eq!(Pallet::<T>::dummy(), Some(b.into())) | ||
| } | ||
|
|
||
| // This will measure the execution time of `accumulate_dummy` for b in [1..1000] range. | ||
| // The benchmark execution phase is shorthanded. When the name of the benchmark case is the same | ||
| // as the extrinsic call. `_(...)` is used to represent the extrinsic name. | ||
| // The benchmark verification phase is omitted. | ||
| accumulate_dummy { | ||
| let b in 1 .. 1000; | ||
| // The caller account is whitelisted for DB reads/write by the benchmarking macro. | ||
| let caller: T::AccountId = whitelisted_caller(); | ||
| }: _(RawOrigin::Signed(caller), b.into()) | ||
gui1117 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| // This will measure the execution time of sorting a vector. | ||
| sort_vector { | ||
| let x in 0 .. 10000; | ||
| let mut m = Vec::<u32>::new(); | ||
| for i in (0..x).rev() { | ||
| m.push(i); | ||
| } | ||
| }: { | ||
| // The benchmark execution phase could also be a closure with custom code | ||
| m.sort(); | ||
| } | ||
| } | ||
|
|
||
| // This line generates test cases for benchmarking, and could be run by: | ||
| // `cargo test -p pallet-example --all-features`, you will see an additional line of: | ||
| // `test benchmarking::benchmark_tests::test_benchmarks ... ok` in the result. | ||
| // | ||
| // The line generates three steps per benchmark, with repeat=1 and the three steps are | ||
| // [low, mid, high] of the range. | ||
| impl_benchmark_test_suite!(Pallet, crate::tests::new_test_ext(), crate::tests::Test); | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.