#[non_exhaustive]pub enum CallgrindMetrics {
Show 13 variants
Default,
CacheMisses,
CacheMissRates,
CacheHits,
CacheHitRates,
CacheSim,
CacheUse,
SystemCalls,
BranchSim,
WriteBackBehaviour,
All,
None,
SingleEvent(EventKind),
}default only.Expand description
A collection of groups of EventKinds
Callgrind supports a large amount of metrics and their collection can be enabled with various
command-line flags. CallgrindMetrics groups these metrics to make it less cumbersome to
specify multiple EventKinds at once if necessary.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Default
The default group contains all event kinds except the CallgrindMetrics::CacheMisses,
CallgrindMetrics::CacheMissRates, CallgrindMetrics::CacheHitRates and
EventKind::Dr, EventKind::Dw. More specifically, the following event kinds and
groups in this order:
use iai_callgrind::{CallgrindMetrics, EventKind};
let metrics: Vec<CallgrindMetrics> = vec![
EventKind::Ir.into(),
CallgrindMetrics::CacheHits,
EventKind::TotalRW.into(),
EventKind::EstimatedCycles.into(),
CallgrindMetrics::SystemCalls,
EventKind::Ge.into(),
CallgrindMetrics::BranchSim,
CallgrindMetrics::WriteBackBehaviour,
CallgrindMetrics::CacheUse,
];CacheMisses
The CacheMisses produced by --cache-sim=yes contain the following EventKinds in
this order:
use iai_callgrind::{CallgrindMetrics, EventKind};
let metrics: Vec<CallgrindMetrics> = vec![
EventKind::I1mr.into(),
EventKind::D1mr.into(),
EventKind::D1mw.into(),
EventKind::ILmr.into(),
EventKind::DLmr.into(),
EventKind::DLmw.into(),
];CacheMissRates
The cache miss rates calculated from the CallgrindMetrics::CacheMisses produced by
--cache-sim:
use iai_callgrind::{CallgrindMetrics, EventKind};
let metrics: Vec<CallgrindMetrics> = vec![
EventKind::I1MissRate.into(),
EventKind::D1MissRate.into(),
EventKind::LLiMissRate.into(),
EventKind::LLdMissRate.into(),
EventKind::LLMissRate.into(),
];CacheHits
CacheHits are iai-callgrind specific and calculated from the metrics produced by
--cache-sim=yes in this order:
use iai_callgrind::{CallgrindMetrics, EventKind};
let metrics: Vec<CallgrindMetrics> = vec![
EventKind::L1hits.into(),
EventKind::LLhits.into(),
EventKind::RamHits.into(),
];CacheHitRates
The cache hit rates calculated from the CallgrindMetrics::CacheHits:
use iai_callgrind::{CallgrindMetrics, EventKind};
let metrics: Vec<CallgrindMetrics> = vec![
EventKind::L1HitRate.into(),
EventKind::LLHitRate.into(),
EventKind::RamHitRate.into(),
];CacheSim
All metrics produced by --cache-sim=yes including the iai-callgrind specific metrics
EventKind::L1hits, EventKind::LLhits, EventKind::RamHits,
EventKind::TotalRW, EventKind::EstimatedCycles and miss/hit rates in this order:
use iai_callgrind::{CallgrindMetrics, EventKind};
let metrics: Vec<CallgrindMetrics> = vec![
EventKind::Dr.into(),
EventKind::Dw.into(),
CallgrindMetrics::CacheMisses,
CallgrindMetrics::CacheMissRates,
CallgrindMetrics::CacheHits,
EventKind::TotalRW.into(),
CallgrindMetrics::CacheHitRates,
EventKind::EstimatedCycles.into(),
];CacheUse
The metrics produced by --cacheuse=yes in this order:
use iai_callgrind::{CallgrindMetrics, EventKind};
let metrics: Vec<CallgrindMetrics> = vec![
EventKind::AcCost1.into(),
EventKind::AcCost2.into(),
EventKind::SpLoss1.into(),
EventKind::SpLoss2.into(),
];SystemCalls
SystemCalls are events of the --collect-systime=yes option in this order:
use iai_callgrind::{CallgrindMetrics, EventKind};
let metrics: Vec<CallgrindMetrics> = vec![
EventKind::SysCount.into(),
EventKind::SysTime.into(),
EventKind::SysCpuTime.into(),
];BranchSim
The metrics produced by --branch-sim=yes in this order:
use iai_callgrind::{CallgrindMetrics, EventKind};
let metrics: Vec<CallgrindMetrics> = vec![
EventKind::Bc.into(),
EventKind::Bcm.into(),
EventKind::Bi.into(),
EventKind::Bim.into(),
];WriteBackBehaviour
All metrics of --simulate-wb=yes in this order:
use iai_callgrind::{CallgrindMetrics, EventKind};
let metrics: Vec<CallgrindMetrics> = vec![
EventKind::ILdmr.into(),
EventKind::DLdmr.into(),
EventKind::DLdmw.into(),
];All
All possible EventKinds in this order:
use iai_callgrind::{CallgrindMetrics, EventKind};
let metrics: Vec<CallgrindMetrics> = vec![
EventKind::Ir.into(),
CallgrindMetrics::CacheSim,
CallgrindMetrics::SystemCalls,
EventKind::Ge.into(),
CallgrindMetrics::BranchSim,
CallgrindMetrics::WriteBackBehaviour,
CallgrindMetrics::CacheUse,
];None
Selection of no EventKind at all
SingleEvent(EventKind)
Specify a single EventKind.
Note that EventKind implements the necessary traits to convert to the
CallgrindMetrics::SingleEvent variant which is shorter to write.
§Examples
use iai_callgrind::{CallgrindMetrics, EventKind};
assert_eq!(
CallgrindMetrics::SingleEvent(EventKind::Ir),
EventKind::Ir.into()
);Trait Implementations§
Source§impl Clone for CallgrindMetrics
impl Clone for CallgrindMetrics
Source§fn clone(&self) -> CallgrindMetrics
fn clone(&self) -> CallgrindMetrics
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more