Struct tango_bench::MeasurementSettings

source ·
pub struct MeasurementSettings {
    pub filter_outliers: bool,
    pub samples_per_haystack: usize,
    pub min_iterations_per_sample: usize,
    pub max_iterations_per_sample: usize,
    pub sampler_type: SampleLengthKind,
    pub warmup_enabled: bool,
    pub cache_firewall: Option<usize>,
    pub yield_before_sample: bool,
    pub randomize_stack: Option<usize>,
}
Expand description

Describes basic settings for the benchmarking process

This structure is passed to cli::run().

Should be created only with overriding needed properties, like so:

use tango_bench::MeasurementSettings;

let settings = MeasurementSettings {
    min_iterations_per_sample: 1000,
    ..Default::default()
};

Fields§

§filter_outliers: bool§samples_per_haystack: usize

The number of samples per one generated haystack

§min_iterations_per_sample: usize

Minimum number of iterations in a sample for each of 2 tested functions

§max_iterations_per_sample: usize

The number of iterations in a sample for each of 2 tested functions

§sampler_type: SampleLengthKind§warmup_enabled: bool

If true scheduler performs warmup iterations before measuring function

§cache_firewall: Option<usize>

Size of a CPU cache firewall in KBytes

If set, the scheduler will perform a dummy data read between samples generation to spoil the CPU cache

Cache firewall is a way to reduce the impact of the CPU cache on the benchmarking process. It tries to minimize discrepancies in performance between two algorithms due to the CPU cache state.

§yield_before_sample: bool

If true, scheduler will perform a yield of control back to the OS before taking each sample

Yielding control to the OS is a way to reduce the impact of OS scheduler on the benchmarking process.

§randomize_stack: Option<usize>

If set, use alloca to allocate a random offset for the stack each sample. This to reduce memory alignment effects on the benchmarking process.

May cause UB if the allocation is larger then the thread stack size.

Trait Implementations§

source§

impl Clone for MeasurementSettings

source§

fn clone(&self) -> MeasurementSettings

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MeasurementSettings

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MeasurementSettings

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl Copy for MeasurementSettings

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> Colorize for T
where T: ?Sized,

source§

fn into_style(self) -> StyledValue<Self>
where Self: Sized,

Convert a value to a StyledValue
source§

fn style(&self) -> StyledValue<&Self>

Convert a value to a StyledValue
source§

fn into_style_with<F, B, U>( self, style: Style<F, B, U>, ) -> StyledValue<Self, F, B, U>
where Self: Sized,

Convert a value to a StyledValue and applies the given style
source§

fn style_with<F, B, U>( &self, style: Style<F, B, U>, ) -> StyledValue<&Self, F, B, U>

Convert a value to a StyledValue and applies the given style
source§

fn fg<C>(&self, color: C) -> StyledValue<&Self, C>

Changes the foreground color
source§

fn into_fg<C>(self, color: C) -> StyledValue<Self, C>
where Self: Sized,

Changes the foreground color
source§

fn bg<C>(&self, color: C) -> StyledValue<&Self, NoColor, C>

Changes the background color
source§

fn into_bg<C>(self, color: C) -> StyledValue<Self, NoColor, C>
where Self: Sized,

Changes the background color
source§

fn underline_color<C>( &self, color: C, ) -> StyledValue<&Self, NoColor, NoColor, C>

Changes the underline color
source§

fn into_underline_color<C>( self, color: C, ) -> StyledValue<Self, NoColor, NoColor, C>
where Self: Sized,

Changes the underline color
source§

fn black(&self) -> StyledValue<&Self, Black>

Changes the foreground to black
source§

fn red(&self) -> StyledValue<&Self, Red>

Changes the foreground to red
source§

fn green(&self) -> StyledValue<&Self, Green>

Changes the foreground to green
source§

fn yellow(&self) -> StyledValue<&Self, Yellow>

Changes the foreground to yellow
source§

fn blue(&self) -> StyledValue<&Self, Blue>

Changes the foreground to blue
source§

fn magenta(&self) -> StyledValue<&Self, Magenta>

Changes the foreground to magenta
source§

fn cyan(&self) -> StyledValue<&Self, Cyan>

Changes the foreground to cyan
source§

fn white(&self) -> StyledValue<&Self, White>

Changes the foreground to white
source§

fn bright_black(&self) -> StyledValue<&Self, BrightBlack>

Changes the foreground to bright black
source§

fn bright_red(&self) -> StyledValue<&Self, BrightRed>

Changes the foreground to bright red
source§

fn bright_green(&self) -> StyledValue<&Self, BrightGreen>

Changes the foreground to bright green
source§

fn bright_yellow(&self) -> StyledValue<&Self, BrightYellow>

Changes the foreground to bright yellow
source§

fn bright_blue(&self) -> StyledValue<&Self, BrightBlue>

Changes the foreground to bright blue
source§

fn bright_magenta(&self) -> StyledValue<&Self, BrightMagenta>

Changes the foreground to bright magenta
source§

fn bright_cyan(&self) -> StyledValue<&Self, BrightCyan>

Changes the foreground to bright cyan
source§

fn bright_white(&self) -> StyledValue<&Self, BrightWhite>

Changes the foreground to bright white
source§

fn on_black(&self) -> StyledValue<&Self, NoColor, Black>

Changes the background to black
source§

fn on_red(&self) -> StyledValue<&Self, NoColor, Red>

Changes the background to red
source§

fn on_green(&self) -> StyledValue<&Self, NoColor, Green>

Changes the background to green
source§

fn on_yellow(&self) -> StyledValue<&Self, NoColor, Yellow>

Changes the background to yellow
source§

fn on_blue(&self) -> StyledValue<&Self, NoColor, Blue>

Changes the background to blue
source§

fn on_magenta(&self) -> StyledValue<&Self, NoColor, Magenta>

Changes the background to magenta
source§

fn on_cyan(&self) -> StyledValue<&Self, NoColor, Cyan>

Changes the background to cyan
source§

fn on_white(&self) -> StyledValue<&Self, NoColor, White>

Changes the background to white
source§

fn on_bright_black(&self) -> StyledValue<&Self, NoColor, BrightBlack>

Changes the background to bright black
source§

fn on_bright_red(&self) -> StyledValue<&Self, NoColor, BrightRed>

Changes the background to bright red
source§

fn on_bright_green(&self) -> StyledValue<&Self, NoColor, BrightGreen>

Changes the background to bright green
source§

fn on_bright_yellow(&self) -> StyledValue<&Self, NoColor, BrightYellow>

Changes the background to bright yellow
source§

fn on_bright_blue(&self) -> StyledValue<&Self, NoColor, BrightBlue>

Changes the background to bright blue
source§

fn on_bright_magenta(&self) -> StyledValue<&Self, NoColor, BrightMagenta>

Changes the background to bright magenta
source§

fn on_bright_cyan(&self) -> StyledValue<&Self, NoColor, BrightCyan>

Changes the background to bright cyan
source§

fn on_bright_white(&self) -> StyledValue<&Self, NoColor, BrightWhite>

Changes the background to bright white
source§

fn into_black(self) -> StyledValue<Self, Black>
where Self: Sized,

Changes the foreground to black
source§

fn into_red(self) -> StyledValue<Self, Red>
where Self: Sized,

Changes the foreground to red
source§

fn into_green(self) -> StyledValue<Self, Green>
where Self: Sized,

Changes the foreground to green
source§

fn into_yellow(self) -> StyledValue<Self, Yellow>
where Self: Sized,

Changes the foreground to yellow
source§

fn into_blue(self) -> StyledValue<Self, Blue>
where Self: Sized,

Changes the foreground to blue
source§

fn into_magenta(self) -> StyledValue<Self, Magenta>
where Self: Sized,

Changes the foreground to magenta
source§

fn into_cyan(self) -> StyledValue<Self, Cyan>
where Self: Sized,

Changes the foreground to cyan
source§

fn into_white(self) -> StyledValue<Self, White>
where Self: Sized,

Changes the foreground to white
source§

fn into_bright_black(self) -> StyledValue<Self, BrightBlack>
where Self: Sized,

Changes the foreground to bright black
source§

fn into_bright_red(self) -> StyledValue<Self, BrightRed>
where Self: Sized,

Changes the foreground to bright red
source§

fn into_bright_green(self) -> StyledValue<Self, BrightGreen>
where Self: Sized,

Changes the foreground to bright green
source§

fn into_bright_yellow(self) -> StyledValue<Self, BrightYellow>
where Self: Sized,

Changes the foreground to bright yellow
source§

fn into_bright_blue(self) -> StyledValue<Self, BrightBlue>
where Self: Sized,

Changes the foreground to bright blue
source§

fn into_bright_magenta(self) -> StyledValue<Self, BrightMagenta>
where Self: Sized,

Changes the foreground to bright magenta
source§

fn into_bright_cyan(self) -> StyledValue<Self, BrightCyan>
where Self: Sized,

Changes the foreground to bright cyan
source§

fn into_bright_white(self) -> StyledValue<Self, BrightWhite>
where Self: Sized,

Changes the foreground to bright white
source§

fn into_on_black(self) -> StyledValue<Self, NoColor, Black>
where Self: Sized,

Changes the background to black
source§

fn into_on_red(self) -> StyledValue<Self, NoColor, Red>
where Self: Sized,

Changes the background to red
source§

fn into_on_green(self) -> StyledValue<Self, NoColor, Green>
where Self: Sized,

Changes the background to green
source§

fn into_on_yellow(self) -> StyledValue<Self, NoColor, Yellow>
where Self: Sized,

Changes the background to yellow
source§

fn into_on_blue(self) -> StyledValue<Self, NoColor, Blue>
where Self: Sized,

Changes the background to blue
source§

fn into_on_magenta(self) -> StyledValue<Self, NoColor, Magenta>
where Self: Sized,

Changes the background to magenta
source§

fn into_on_cyan(self) -> StyledValue<Self, NoColor, Cyan>
where Self: Sized,

Changes the background to cyan
source§

fn into_on_white(self) -> StyledValue<Self, NoColor, White>
where Self: Sized,

Changes the background to white
source§

fn into_on_bright_black(self) -> StyledValue<Self, NoColor, BrightBlack>
where Self: Sized,

Changes the background to bright black
source§

fn into_on_bright_red(self) -> StyledValue<Self, NoColor, BrightRed>
where Self: Sized,

Changes the background to bright red
source§

fn into_on_bright_green(self) -> StyledValue<Self, NoColor, BrightGreen>
where Self: Sized,

Changes the background to bright green
source§

fn into_on_bright_yellow(self) -> StyledValue<Self, NoColor, BrightYellow>
where Self: Sized,

Changes the background to bright yellow
source§

fn into_on_bright_blue(self) -> StyledValue<Self, NoColor, BrightBlue>
where Self: Sized,

Changes the background to bright blue
source§

fn into_on_bright_magenta(self) -> StyledValue<Self, NoColor, BrightMagenta>
where Self: Sized,

Changes the background to bright magenta
source§

fn into_on_bright_cyan(self) -> StyledValue<Self, NoColor, BrightCyan>
where Self: Sized,

Changes the background to bright cyan
source§

fn into_on_bright_white(self) -> StyledValue<Self, NoColor, BrightWhite>
where Self: Sized,

Changes the background to bright white
source§

fn bold(&self) -> StyledValue<&Self>

Applies the bold effect
source§

fn dimmed(&self) -> StyledValue<&Self>

Applies the dimmed effect
source§

fn italics(&self) -> StyledValue<&Self>

Applies the italics effect
source§

fn underline(&self) -> StyledValue<&Self>

Applies the underline effect
source§

fn double_underline(&self) -> StyledValue<&Self>

Applies the double underline effect
Applies the blink effect
Applies the blink fast effect
source§

fn reverse(&self) -> StyledValue<&Self>

Applies the reverse effect
source§

fn hide(&self) -> StyledValue<&Self>

Applies the hide effect
source§

fn strikethrough(&self) -> StyledValue<&Self>

Applies the strikethrough effect
source§

fn overline(&self) -> StyledValue<&Self>

Applies the overline effect
source§

fn superscript(&self) -> StyledValue<&Self>

Applies the superscript effect
source§

fn subscript(&self) -> StyledValue<&Self>

Applies the subscript effect
source§

fn into_bold(self) -> StyledValue<Self>
where Self: Sized,

Applies the bold effect
source§

fn into_dimmed(self) -> StyledValue<Self>
where Self: Sized,

Applies the dimmed effect
source§

fn into_italics(self) -> StyledValue<Self>
where Self: Sized,

Applies the italics effect
source§

fn into_underline(self) -> StyledValue<Self>
where Self: Sized,

Applies the underline effect
source§

fn into_double_underline(self) -> StyledValue<Self>
where Self: Sized,

Applies the double underline effect
Applies the blink effect
Applies the blink fast effect
source§

fn into_reverse(self) -> StyledValue<Self>
where Self: Sized,

Applies the reverse effect
source§

fn into_hide(self) -> StyledValue<Self>
where Self: Sized,

Applies the hide effect
source§

fn into_strikethrough(self) -> StyledValue<Self>
where Self: Sized,

Applies the strikethrough effect
source§

fn into_overline(self) -> StyledValue<Self>
where Self: Sized,

Applies the overline effect
source§

fn into_superscript(self) -> StyledValue<Self>
where Self: Sized,

Applies the superscript effect
source§

fn into_subscript(self) -> StyledValue<Self>
where Self: Sized,

Applies the subscript effect
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V