pub struct GraphMetrics {
pub edge_insert_latency: LatencyHistogram,
pub traversal_latency: LatencyHistogram,
pub query_latency: LatencyHistogram,
/* private fields */
}Expand description
Graph-specific performance metrics.
Thread-safe counters and histograms for monitoring graph operations.
§Example
use velesdb_core::collection::graph::GraphMetrics;
let metrics = GraphMetrics::new();
// Record an edge insertion (counters only — see `record_edge_inserts_batch`
// for the batch path, which is what feeds `edge_insert_latency`)
metrics.record_edge_insert();
// Get statistics
println!("Total edges inserted: {}", metrics.edge_inserts_total());Fields§
§edge_insert_latency: LatencyHistogramEdge insertion latency histogram. Populated by the batch insert path
only — the single-edge path records counters without a clock read
(see record_edge_insert).
traversal_latency: LatencyHistogramTraversal latency histogram
query_latency: LatencyHistogramQuery latency histogram
Implementations§
Source§impl GraphMetrics
impl GraphMetrics
Sourcepub fn record_edge_insert(&self)
pub fn record_edge_insert(&self)
Records an edge insertion.
Counters only — no clock read. The single-edge path runs per write, so
a per-call Instant::now() plus histogram bucketing was a real cost
paid on every insert; nothing reads it. edge_insert_latency is
still fed by record_edge_inserts_batch, which pays that cost once
per batch instead of once per edge.
Sourcepub fn record_edge_inserts_batch(&self, count: u64, latency: Duration)
pub fn record_edge_inserts_batch(&self, count: u64, latency: Duration)
Records a batch edge insertion.
Bumps the insert/edge counters by count and observes the batch
latency once, avoiding a per-edge Instant::now() on the bulk path.
Sourcepub fn record_edge_delete(&self)
pub fn record_edge_delete(&self)
Records an edge deletion.
Counters only — no clock read. See record_edge_insert for why: the
per-delete Instant::now() this used to take had no reader.
Uses saturating subtraction to prevent underflow.
Sourcepub fn edges_total(&self) -> u64
pub fn edges_total(&self) -> u64
Returns total edge count.
Sourcepub fn edge_inserts_total(&self) -> u64
pub fn edge_inserts_total(&self) -> u64
Returns total edge insertions.
Sourcepub fn edge_deletes_total(&self) -> u64
pub fn edge_deletes_total(&self) -> u64
Returns total edge deletions.
Sourcepub fn record_traversal(&self, latency: Duration, nodes_visited: u64)
pub fn record_traversal(&self, latency: Duration, nodes_visited: u64)
Records a traversal with latency and nodes visited.
Sourcepub fn traversals_total(&self) -> u64
pub fn traversals_total(&self) -> u64
Returns total traversal count.
Sourcepub fn traversal_nodes_visited(&self) -> u64
pub fn traversal_nodes_visited(&self) -> u64
Returns total nodes visited across all traversals.
Sourcepub fn record_query(&self, latency: Duration)
pub fn record_query(&self, latency: Duration)
Records a query latency.
Trait Implementations§
Source§impl Debug for GraphMetrics
impl Debug for GraphMetrics
Source§impl Default for GraphMetrics
impl Default for GraphMetrics
Source§fn default() -> GraphMetrics
fn default() -> GraphMetrics
Auto Trait Implementations§
impl !Freeze for GraphMetrics
impl RefUnwindSafe for GraphMetrics
impl Send for GraphMetrics
impl Sync for GraphMetrics
impl Unpin for GraphMetrics
impl UnsafeUnpin for GraphMetrics
impl UnwindSafe for GraphMetrics
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);