Skip to content

Commit 384f918

Browse files
committed
Calculate magnitude based on amount over threshold and size of change
1 parent d07ca42 commit 384f918

File tree

1 file changed

+37
-6
lines changed

1 file changed

+37
-6
lines changed

site/src/comparison.rs

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -797,19 +797,50 @@ impl TestResultComparison {
797797
}
798798

799799
fn magnitude(&self) -> Magnitude {
800-
let mag = self.relative_change().abs();
800+
let change = self.relative_change().abs();
801801
let threshold = self.signifcance_threshold();
802-
if mag < threshold * 1.5 {
802+
let over_threshold = if change < threshold * 1.5 {
803803
Magnitude::VerySmall
804-
} else if mag < threshold * 3.0 {
804+
} else if change < threshold * 3.0 {
805805
Magnitude::Small
806-
} else if mag < threshold * 10.0 {
806+
} else if change < threshold * 10.0 {
807807
Magnitude::Medium
808-
} else if mag < threshold * 25.0 {
808+
} else if change < threshold * 25.0 {
809809
Magnitude::Large
810810
} else {
811811
Magnitude::VeryLarge
812+
};
813+
let change_magnitude = if change < 0.002 {
814+
Magnitude::VerySmall
815+
} else if change < 0.01 {
816+
Magnitude::Small
817+
} else if change < 0.02 {
818+
Magnitude::Medium
819+
} else if change < 0.05 {
820+
Magnitude::Large
821+
} else {
822+
Magnitude::VeryLarge
823+
};
824+
fn as_u8(m: Magnitude) -> u8 {
825+
match m {
826+
Magnitude::VerySmall => 1,
827+
Magnitude::Small => 2,
828+
Magnitude::Medium => 3,
829+
Magnitude::Large => 4,
830+
Magnitude::VeryLarge => 5,
831+
}
812832
}
833+
fn from_u8(m: u8) -> Magnitude {
834+
match m {
835+
1 => Magnitude::VerySmall,
836+
2 => Magnitude::Small,
837+
3 => Magnitude::Medium,
838+
4 => Magnitude::Large,
839+
_ => Magnitude::VeryLarge,
840+
}
841+
}
842+
843+
from_u8((as_u8(over_threshold) + as_u8(change_magnitude)) / 2)
813844
}
814845

815846
fn is_dodgy(&self) -> bool {
@@ -895,7 +926,7 @@ impl std::fmt::Display for Direction {
895926
}
896927

897928
/// The relative size of a performance change
898-
#[derive(Debug, PartialOrd, PartialEq, Ord, Eq)]
929+
#[derive(Clone, Copy, Debug, PartialOrd, PartialEq, Ord, Eq)]
899930
pub enum Magnitude {
900931
VerySmall,
901932
Small,

0 commit comments

Comments
 (0)