macro_rules! measure {
    ($val:expr, $name:tt $(,)?) => { ... };
    ($val:expr) => { ... };
}
Expand description

Measure this expression

Use measure!() when you have an expression that you want to measure. measure!() will start a new Measure, evaluate your expression, stop the Measure, and then return the Measure object along with your expression’s return value.

Use measure_us!() when you want to measure an expression in microseconds.

Examples

// Measure functions
let (result, measure) = measure!(foo(), "foo takes no parameters");
let (result, measure) = measure!(bar(42), "bar takes one parameter");
let (result, measure) = measure!(add(1, 2), "add takes two parameters and returns a value");
let (result, measure_us) = measure_us!(add(1, 2));
// Measure methods
let foo = Foo { f: 42 };
let (result, measure) = measure!(foo.frobnicate(2), "measure methods");
let (result, measure_us) = measure_us!(foo.frobnicate(2));
// Measure expression blocks
let (result, measure) = measure!(
    {
        let x = complex_calculation();
        let y = complex_transform(x);
        record_result(y);
        y
    },
    "measure a block of many operations",
);
// The `name` parameter is optional
let (result, measure) = measure!(meow());
let (result, measure_us) = measure_us!(meow());