Struct pew::State [] [src]

pub struct State<T> { /* fields omitted */ }

This is the benchmark state. At a high level, it allows one to pause the timer and also access an argument for this run of the benchmark.

T will either be u64 in the case of RANGE, or a user defined T: Clone + Default in the case of GENRANGE.

Methods

impl<T> State<T>
[src]

[src]

Pauses the benchmark timer. Useful to do any initialization work, etc. The state begins in a running (unpaused) state.

Examples

use pew::{self, State};
use std::vec::Vec;

fn bm_simple(state: &mut State<u64>) {
    state.pause();
    let mut vec = Vec::new();
    vec.push(1);
    state.resume();
    pew::do_not_optimize(vec.get(1));
}

Panics

Panics if the state is already paused.

[src]

Resumes the benchmark timer. Useful after any initialization work, etc. The state begins in a running (unpaused) state.

#Examples

use pew::{self, State};
use std::vec::Vec;

fn bm_simple(state: &mut State<u64>) {
    state.pause();
    let mut vec = Vec::new();
    vec.push(1);
    state.resume();
    pew::do_not_optimize(vec.get(1));
}

Panics

Panics if the state is already paused.

impl<T: Default> State<T>
[src]

[src]

Returns the input. Either u64 (if using RANGE) or a user specified T: Clone + Default if using GENRANGE.

Examples

RANGE

use pew::{self, State};
use std::vec::Vec;

fn bm_simple(state: &mut State<u64>) {
    let n = state.get_input();
    state.pause();
    let mut vec = Vec::with_capacity(n as usize);
    state.resume();
    for i in 0..n {
        vec.push(i as u64);
    }
}

GENRANGE

use pew::{self, State};
use std::vec::Vec;

fn bm_simple(state: &mut State<Vec<u64>>) {
    let mut vec = state.get_input();
    let n = vec.len();
    for i in 0..n {
        vec.push(i as u64);
    }
}

Panics

Panics if the state is paused.

Trait Implementations

Auto Trait Implementations

impl<T> Send for State<T> where
    T: Send

impl<T> Sync for State<T> where
    T: Sync