@@ -797,19 +797,50 @@ impl TestResultComparison {
797
797
}
798
798
799
799
fn magnitude ( & self ) -> Magnitude {
800
- let mag = self . relative_change ( ) . abs ( ) ;
800
+ let change = self . relative_change ( ) . abs ( ) ;
801
801
let threshold = self . signifcance_threshold ( ) ;
802
- if mag < threshold * 1.5 {
802
+ let over_threshold = if change < threshold * 1.5 {
803
803
Magnitude :: VerySmall
804
- } else if mag < threshold * 3.0 {
804
+ } else if change < threshold * 3.0 {
805
805
Magnitude :: Small
806
- } else if mag < threshold * 10.0 {
806
+ } else if change < threshold * 10.0 {
807
807
Magnitude :: Medium
808
- } else if mag < threshold * 25.0 {
808
+ } else if change < threshold * 25.0 {
809
809
Magnitude :: Large
810
810
} else {
811
811
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
+ }
812
832
}
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 )
813
844
}
814
845
815
846
fn is_dodgy ( & self ) -> bool {
@@ -895,7 +926,7 @@ impl std::fmt::Display for Direction {
895
926
}
896
927
897
928
/// The relative size of a performance change
898
- #[ derive( Debug , PartialOrd , PartialEq , Ord , Eq ) ]
929
+ #[ derive( Clone , Copy , Debug , PartialOrd , PartialEq , Ord , Eq ) ]
899
930
pub enum Magnitude {
900
931
VerySmall ,
901
932
Small ,
0 commit comments