Expand description
Budget evaluation logic for performance thresholds.
This crate provides pure budget evaluation functions with no I/O dependencies. It handles threshold checking, regression calculation, and verdict aggregation.
Part of the perfgate workspace.
§Overview
The crate provides:
evaluate_budget- Evaluate a single metric against a budget thresholdcalculate_regression- Calculate regression percentage between baseline and currentdetermine_status- Determine metric status (Pass/Warn/Fail) from regressionaggregate_verdict- Aggregate multiple metric statuses into a final verdict
§Example
use perfgate_budget::{evaluate_budget, calculate_regression, determine_status};
use perfgate_types::{Budget, Direction, MetricStatus};
use std::collections::BTreeMap;
// Create a budget for a lower-is-better metric (e.g., wall time)
let budget = Budget {
noise_threshold: None,
noise_policy: perfgate_types::NoisePolicy::Ignore,
threshold: 0.20, // 20% regression fails
warn_threshold: 0.10, // 10% regression warns
direction: Direction::Lower,
};
// Evaluate baseline vs current
let baseline = 100.0;
let current = 115.0;
let result = evaluate_budget(baseline, current, &budget, None).unwrap();
assert_eq!(result.status, MetricStatus::Warn);
assert!((result.regression - 0.15).abs() < 1e-10);Structs§
- Budget
Result - Result of evaluating a single metric against a budget.
Enums§
- Budget
Error - Errors that can occur during budget evaluation.
Functions§
- aggregate_
verdict - Aggregates multiple metric statuses into a final verdict.
- calculate_
regression - Calculates the regression percentage between baseline and current values.
- determine_
status - Determines the metric status based on regression and thresholds.
- evaluate_
budget - Evaluates a metric against a budget threshold.
- evaluate_
budgets - Evaluates multiple metrics against their budgets.
- reason_
token - Generates a reason token for a metric status.