#[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 EventKind
s
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 EventKind
s 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 EventKind
s 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 EventKind
s 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§const fn clone_from(&mut self, source: &Self)
const fn clone_from(&mut self, source: &Self)
source
. Read more