]> git.lizzy.rs Git - rust.git/commitdiff
extra: avoid possible divide-by-zero conditions test.
authorGraydon Hoare <graydon@mozilla.com>
Wed, 17 Jul 2013 19:28:48 +0000 (12:28 -0700)
committerGraydon Hoare <graydon@mozilla.com>
Wed, 17 Jul 2013 19:28:48 +0000 (12:28 -0700)
src/libextra/test.rs

index cebf518f09b02f878bfd10b0425ccca02a9ff8f6..deef1fc36138ddfa81603b6fb48257b6a9a1ba71 100644 (file)
@@ -845,7 +845,7 @@ pub fn compare_to_old(&self, old: &MetricMap,
                     if delta.abs() <= noise {
                         LikelyNoise
                     } else {
-                        let pct = delta.abs() / vold.value * 100.0;
+                        let pct = delta.abs() / (vold.value).max(&f64::epsilon) * 100.0;
                         if vold.noise < 0.0 {
                             // When 'noise' is negative, it means we want
                             // to see deltas that go up over time, and can
@@ -954,7 +954,7 @@ pub fn ns_per_iter(&mut self) -> u64 {
         if self.iterations == 0 {
             0
         } else {
-            self.ns_elapsed() / self.iterations
+            self.ns_elapsed() / self.iterations.max(&1)
         }
     }
 
@@ -977,7 +977,7 @@ pub fn auto_bench(&mut self, f: &fn(&mut BenchHarness)) -> stats::Summary {
         if self.ns_per_iter() == 0 {
             n = 1_000_000;
         } else {
-            n = 1_000_000 / self.ns_per_iter();
+            n = 1_000_000 / self.ns_per_iter().max(&1);
         }
 
         let mut total_run = 0;
@@ -1047,7 +1047,8 @@ pub fn benchmark(f: &fn(&mut BenchHarness)) -> BenchSamples {
 
         let ns_iter_summ = bs.auto_bench(f);
 
-        let iter_s = 1_000_000_000 / (ns_iter_summ.median as u64);
+        let ns_iter = (ns_iter_summ.median as u64).max(&1);
+        let iter_s = 1_000_000_000 / ns_iter;
         let mb_s = (bs.bytes * iter_s) / 1_000_000;
 
         BenchSamples {