pub struct PerfwarnIntervalIf { /* private fields */ }Expand description
A conditional performance warning interval that logs only if execution exceeds a threshold.
Unlike PerfwarnInterval which always logs, PerfwarnIntervalIf only emits a warning
if the measured duration exceeds the specified threshold. This is useful for operations
that are normally fast but occasionally slow down due to external factors.
§Usage
This type is typically not created directly. Instead, use the perfwarn_begin_if! macro
which properly sets up the interval with source location information.
§Example
logwise::declare_logging_domain!();
// Create a conditional interval that warns only if execution takes > 100ms
let _interval = logwise::perfwarn_begin_if!(Duration::from_millis(100), "database_query");
perform_database_query();
// If the query took longer than 100ms, a warning is logged when _interval drops§Behavior
- The interval starts when created
- On drop, if the elapsed time exceeds the threshold:
- The duration is logged at the
PerfWarnlevel - The interval is added to the current task’s statistics
- The duration is logged at the
- If the elapsed time is below the threshold, no log is emitted
Implementations§
Source§impl PerfwarnIntervalIf
impl PerfwarnIntervalIf
Sourcepub fn new(
label: &'static str,
time: Instant,
threshold: Duration,
record: LogRecord,
) -> Self
pub fn new( label: &'static str, time: Instant, threshold: Duration, record: LogRecord, ) -> Self
Creates a new conditional performance warning interval.
This method is used internally by the perfwarn_begin_if! macro. You should
generally use the macro rather than calling this method directly, as the macro
properly captures source location information.
§Arguments
label- A static string identifying this interval in log messagestime- The start time of the intervalthreshold- The duration threshold; warnings are only logged if exceededrecord- A pre-populated log record with source location information
§Example
Use the perfwarn_begin_if! macro instead:
logwise::declare_logging_domain!();
use std::time::Duration;
let _interval = logwise::perfwarn_begin_if!(
Duration::from_millis(100),
"database_query"
);
// ... perform operation ...
// Only logs if operation took > 100ms