Skip to main content

Crate perfgate_budget

Crate perfgate_budget 

Source
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:

§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§

BudgetResult
Result of evaluating a single metric against a budget.

Enums§

BudgetError
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.