权重Weight和基准Benchmarking
默认的Substrate块生产系统以一致的间隔生产块。这就是所谓的目标块时间。考虑到这一要求,基于Substrate的区块链只能在每个区块执行有限数量的extrinsics。根据计算复杂度、存储复杂度、使用的硬件和许多其他因素,执行一个外部因素所需的时间可能会有所不同。我们使用称为权重的通用度量来表示一个块可以容纳多少extrinsics。
我们使用称为权重的通用度量来表示一个块可以容纳多少extrinsics。
10^12 weight units = 1 second, or 1,000 weight units = 1 nanosecond 这是在特定的参考硬件上测量的:Intel Core i7-7700K CPU, 64GB RAM和NVMe SSD。
Substrate期望基准测试能够为执行外部构件的最坏情况提供一个近似的最大值。如果采用了这种最坏的情况,用户将被收取费用,如果外部资源需要的资源更少,一些估计的权重和费用可以被返还。这在交易权重和费用一章中有进一步的解释。
步骤Steps
1. 编写benchmarking.rs
benchmarks! {
//这将测量 [1..100] 范围内 b 的 `do_something` 的执行时间。
do_something {
let s in 0 .. 100;
let caller: T::AccountId = whitelisted_caller();
}: _(RawOrigin::Signed(caller), s)
verify {
as