mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-26 07:37:57 +00:00
Custom Benchmark Errors and Override (#9517)
* initial idea * update benchmark test to frame v2 * fix some errors * fixes for elec phrag * fix tests * update extrinsic time and docs * fix import * undo extra changes * helper function * wrong way * Update frame/benchmarking/src/utils.rs Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com> * doesnt need encode/decode * fix benchmark return Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
|
||||
//! Tools for analyzing the benchmark results.
|
||||
|
||||
use crate::BenchmarkResults;
|
||||
use crate::BenchmarkResult;
|
||||
use core::convert::TryFrom;
|
||||
use linregress::{FormulaRegressionBuilder, RegressionDataBuilder};
|
||||
use std::collections::BTreeMap;
|
||||
@@ -76,7 +76,7 @@ impl TryFrom<Option<String>> for AnalysisChoice {
|
||||
impl Analysis {
|
||||
// Useful for when there are no components, and we just need an median value of the benchmark
|
||||
// results. Note: We choose the median value because it is more robust to outliers.
|
||||
fn median_value(r: &Vec<BenchmarkResults>, selector: BenchmarkSelector) -> Option<Self> {
|
||||
fn median_value(r: &Vec<BenchmarkResult>, selector: BenchmarkSelector) -> Option<Self> {
|
||||
if r.is_empty() {
|
||||
return None
|
||||
}
|
||||
@@ -104,7 +104,7 @@ impl Analysis {
|
||||
})
|
||||
}
|
||||
|
||||
pub fn median_slopes(r: &Vec<BenchmarkResults>, selector: BenchmarkSelector) -> Option<Self> {
|
||||
pub fn median_slopes(r: &Vec<BenchmarkResult>, selector: BenchmarkSelector) -> Option<Self> {
|
||||
if r[0].components.is_empty() {
|
||||
return Self::median_value(r, selector)
|
||||
}
|
||||
@@ -199,7 +199,7 @@ impl Analysis {
|
||||
})
|
||||
}
|
||||
|
||||
pub fn min_squares_iqr(r: &Vec<BenchmarkResults>, selector: BenchmarkSelector) -> Option<Self> {
|
||||
pub fn min_squares_iqr(r: &Vec<BenchmarkResult>, selector: BenchmarkSelector) -> Option<Self> {
|
||||
if r[0].components.is_empty() {
|
||||
return Self::median_value(r, selector)
|
||||
}
|
||||
@@ -279,7 +279,7 @@ impl Analysis {
|
||||
})
|
||||
}
|
||||
|
||||
pub fn max(r: &Vec<BenchmarkResults>, selector: BenchmarkSelector) -> Option<Self> {
|
||||
pub fn max(r: &Vec<BenchmarkResult>, selector: BenchmarkSelector) -> Option<Self> {
|
||||
let median_slopes = Self::median_slopes(r, selector);
|
||||
let min_squares = Self::min_squares_iqr(r, selector);
|
||||
|
||||
@@ -402,8 +402,8 @@ mod tests {
|
||||
storage_root_time: u128,
|
||||
reads: u32,
|
||||
writes: u32,
|
||||
) -> BenchmarkResults {
|
||||
BenchmarkResults {
|
||||
) -> BenchmarkResult {
|
||||
BenchmarkResult {
|
||||
components,
|
||||
extrinsic_time,
|
||||
storage_root_time,
|
||||
|
||||
Reference in New Issue
Block a user