Skip to main content

Profiler

Struct Profiler 

Source
pub struct Profiler { /* private fields */ }
Expand description

A bounded, cloneable span collector. It starts no threads, keeps no global state, and reads only the clock you give it.

Implementations§

Source§

impl Profiler

Source

pub fn new(clock: impl Clock + 'static, capacity: usize) -> Self

Keep up to capacity finished spans. Later spans are dropped and counted, so every export shows incomplete coverage.

Source

pub fn set_report_timing(&self, enabled: bool)

Time reports as well as checks, in spans started from now on.

Off by default because it reads the clock at every instrumented report. With it on, each span records its longest ReportGap. DiagnosticPulse turns it on.

Source

pub fn metadata(&self, key: impl Into<String>, value: impl Into<String>)

Record a key/value pair, such as a configuration or build identity. A repeated key replaces the earlier value.

Source

pub fn span( &self, node: impl Into<Option<NodeId>>, task: impl Into<String>, kind: SpanKind, ) -> Span

Start a span for one task. node ties it to a progress-tree phase; pass None for work outside a tree.

use how_far_along::{Outcome, Unstoppable};
use how_far_really::profile::{Profiler, SpanKind, StdClock};

let profiler = Profiler::new(StdClock::new(), 16);
let span = profiler.span(None, "decode", SpanKind::Work);
let stop = span.instrument(Unstoppable);
// decode(&input, &stop)?;
span.finish(Outcome::Succeeded);
assert_eq!(profiler.snapshot().spans.len(), 1);
Source

pub fn measure_callback<R>( &self, task: impl Into<String>, callback: impl FnOnce() -> R, ) -> R

Run one callback inside a Callback span. A panic records the span as abandoned and keeps unwinding.

Source

pub fn cancellation_requested(&self)

Record when cancellation was actually requested. Call it next to the application’s cancel call, not when a callback notices.

Source

pub fn operation_returned(&self)

Record when the operation returned, after every worker joined and cleanup finished.

Source

pub fn snapshot(&self) -> Trace

Copy the finished spans. Active and dropped counts show what is missing.

Source

pub fn try_snapshot(&self) -> Option<Trace>

snapshot without waiting: None if another thread holds the collector’s lock. UI threads keep their last trace and retry.

Trait Implementations§

Source§

impl Clone for Profiler

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Profiler

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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.