This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Benchmark.t: avoid ultra-lightweight code
authorDavid Mitchell <davem@iabyn.com>
Mon, 21 Oct 2013 12:45:36 +0000 (13:45 +0100)
committerDavid Mitchell <davem@iabyn.com>
Mon, 21 Oct 2013 12:50:26 +0000 (13:50 +0100)
Some tests benchmarked the code '$i++', which is so lightweight that it
could trigger the die "Timing is consistently zero in estimation loop"
in Benchmark.pm.

So make the code slightly more heavyweight.

lib/Benchmark.t

index 177af10..7706bba 100644 (file)
@@ -401,7 +401,9 @@ sub check_graph {
 {
     select(OUT);
     my $start = times;
-    my $chart = cmpthese( -0.1, { a => "++\$i", b => "\$i = sqrt(\$i++)" }, "auto" ) ;
+    my $chart = cmpthese( -0.1, { a => "\$i = sqrt(\$i++) * sqrt(\$i)",
+                                  b => "\$i = sqrt(\$i++)",
+                                }, "auto" ) ;
     my $end = times;
     select(STDOUT);
     ok (($end - $start) > 0.05, "benchmarked code ran for over 0.05 seconds");
@@ -423,7 +425,8 @@ sub check_graph {
 {
     select(OUT);
     my $start = times;
-    my $chart = cmpthese( -0.1, { a => "++\$i", b => "\$i = sqrt(\$i++)" } ) ;
+    my $chart = cmpthese( -0.1, { a => "\$i = sqrt(\$i++) * sqrt(\$i)",
+                                  b => "\$i = sqrt(\$i++)" });
     my $end = times;
     select(STDOUT);
     ok (($end - $start) > 0.05, "benchmarked code ran for over 0.05 seconds");