Struct iai_callgrind::Tool

source ·
pub struct Tool(/* private fields */);
Expand description

Configure to run other valgrind tools like DHAT or Massif in addition to callgrind

For a list of possible tools see ValgrindTool.

See also the Valgrind User Manual for details about possible tools and their command line arguments.

Examples

use iai_callgrind::{main, LibraryBenchmarkConfig, Tool, ValgrindTool};
main!(
    config = LibraryBenchmarkConfig::default()
                .tool(Tool::new(ValgrindTool::DHAT));
    library_benchmark_groups = some_group
);

Implementations§

source§

impl Tool

source

pub fn new(tool: ValgrindTool) -> Self

Create a new Tool configuration

Examples
use iai_callgrind::{Tool, ValgrindTool};

let tool = Tool::new(ValgrindTool::DHAT);
source

pub fn enable(&mut self, value: bool) -> &mut Self

If true, enable running this Tool (Default: true)

Examples
use iai_callgrind::{Tool, ValgrindTool};

let tool = Tool::new(ValgrindTool::DHAT).enable(true);
source

pub fn args<I, T>(&mut self, args: T) -> &mut Self
where I: AsRef<str>, T: IntoIterator<Item = I>,

Pass one or more arguments directly to the valgrind Tool

Some command line arguments for tools like DHAT (for example --trace-children=yes) don’t work without splitting the output into multiple files. Use Tool::outfile_modifier to configure splitting the output.

Examples
use iai_callgrind::{Tool, ValgrindTool};

let tool = Tool::new(ValgrindTool::DHAT).args(["--num-callers=5", "--mode=heap"]);
source

pub fn outfile_modifier<T>(&mut self, modifier: T) -> &mut Self
where T: Into<String>,

Add an output and log file modifier like %p or %n

The modifier is appended to the file name’s default extensions *.out and *.log

All output file modifiers specified in the Valgrind Documentation of --log-file can be used. If using %q{ENV} don’t forget, that by default all environment variables are cleared. Either specify to not clear the environment or to pass-through/define environment variables.

Examples

The following example will result in file names ending with the PID of processes including their child processes as extension. See also the Valgrind Documentation of --trace-children and --log-file for more details.

use iai_callgrind::{LibraryBenchmarkConfig, main, Tool, ValgrindTool};

main!(
    config = LibraryBenchmarkConfig::default()
        .tool(
            Tool::new(ValgrindTool::DHAT)
                .args(["--trace-children=yes"])
                .outfile_modifier("%p")
        );
    library_benchmark_groups = some_group
);

Trait Implementations§

source§

impl AsRef<Tool> for Tool

source§

fn as_ref(&self) -> &Tool

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl From<&Tool> for InternalTool

source§

fn from(value: &Tool) -> Self

Converts to this type from the input type.
source§

impl From<&mut Tool> for InternalTool

source§

fn from(value: &mut Tool) -> Self

Converts to this type from the input type.
source§

impl From<Tool> for InternalTool

source§

fn from(value: Tool) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl RefUnwindSafe for Tool

§

impl Send for Tool

§

impl Sync for Tool

§

impl Unpin for Tool

§

impl UnwindSafe for Tool

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> 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, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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.