From 9c9114881c49e6eb066cb97d02863d4a5a1c5d98 Mon Sep 17 00:00:00 2001 From: pjh456 <147148383@qq.com> Date: Sat, 26 Sep 2026 13:32:36 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=9F=BA=E7=BA=BF=E5=AF=B9=E6=AF=94=20i?= =?UTF-8?q?c=5Fhit=5Frate=20=E6=8C=89=E8=B6=8A=E9=AB=98=E8=B6=8A=E5=A5=BD?= =?UTF-8?q?=E6=96=B9=E5=90=91=E5=88=A4=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/oxide_cli/src/bench/baseline.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/crates/oxide_cli/src/bench/baseline.rs b/crates/oxide_cli/src/bench/baseline.rs index 8a75eb3b..684a748b 100644 --- a/crates/oxide_cli/src/bench/baseline.rs +++ b/crates/oxide_cli/src/bench/baseline.rs @@ -48,6 +48,7 @@ pub fn save_baseline(results: &[MetricCollection]) -> Result<(), String> { } /// 对比当前结果与基线,返回所有超过各自容差(wall_time 10%、GC 类 50%、其它 20%)的回归项。 +/// 方向语义:`ic_hit_rate` 越高越好(下降超容差才报回归),其余指标越低越好(上升超容差报回归)。 pub fn compare_baseline(current: &[MetricCollection]) -> Vec { let baseline = match load_baseline() { Ok(b) => b, @@ -83,7 +84,12 @@ pub fn compare_baseline(current: &[MetricCollection]) -> Vec { _ => 0.20, }; let ratio = cur_val / base_val; - if ratio > 1.0 + tolerance { + let regressed = if matches!(name, "ic_hit_rate") { + ratio < 1.0 - tolerance + } else { + ratio > 1.0 + tolerance + }; + if regressed { regressions.push(Regression { metric: name.to_string(), test_name: cur.test_name.clone(),