RunMeta

Struct RunMeta 

Source
pub struct RunMeta { /* private fields */ }
Expand description

Informs a benchmark run callback about the basic metadata associated with the run.

This type is passed to various callback functions during benchmark execution, providing information about the current thread group, total number of groups, and iteration count. This allows callbacks to behave differently based on their context within the benchmark run.

§Examples

use many_cpus::ProcessorSet;
use par_bench::{Run, ThreadPool};
use new_zealand::nz;

let mut pool = ThreadPool::new(&processors);

let run = Run::new()
    .groups(nz!(2)) // 2 groups of 2 threads each
    .prepare_thread(|args| {
        println!("Thread in group {} of {}",
                 args.meta().group_index(),
                 args.meta().group_count());
        println!("Will execute {} iterations", args.meta().iterations());
         
        // Return different state based on group
        if args.meta().group_index() == 0 {
            "reader_thread"
        } else {
            "writer_thread"
        }
    })
    .prepare_iter(|args| *args.thread_state())
    .iter(|mut args| {
        let thread_type = args.take_iter_state();
        match thread_type {
            "reader_thread" => { /* reader work */ },
            "writer_thread" => { /* writer work */ },
            _ => unreachable!(),
        }
    });

let _results = run.execute_on(&mut pool, 100);

Implementations§

Source§

impl RunMeta

Source

pub fn group_index(&self) -> usize

The index of the current thread group, starting from 0.

Source

pub fn group_count(&self) -> NonZero<usize>

The total number of thread groups in the run.

Source

pub fn thread_count(&self) -> NonZero<usize>

The total number of threads used to execute the run.

Source

pub fn iterations(&self) -> u64

How many iterations will be executed as part of this run.

Trait Implementations§

Source§

impl Clone for RunMeta

Source§

fn clone(&self) -> RunMeta

Returns a duplicate 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 RunMeta

Source§

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

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

impl PartialEq for RunMeta

Source§

fn eq(&self, other: &RunMeta) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for RunMeta

Source§

impl Eq for RunMeta

Source§

impl StructuralPartialEq for RunMeta

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, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
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