summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Benchmark.pm8
-rw-r--r--lib/Benchmark.t26
2 files changed, 29 insertions, 5 deletions
diff --git a/lib/Benchmark.pm b/lib/Benchmark.pm
index cda764f6ca..5ba9190211 100644
--- a/lib/Benchmark.pm
+++ b/lib/Benchmark.pm
@@ -196,7 +196,7 @@ Clear the cached time for COUNT rounds of the null loop.
Clear all cached times.
-=item cmpthese ( COUT, CODEHASHREF, [ STYLE ] )
+=item cmpthese ( COUNT, CODEHASHREF, [ STYLE ] )
=item cmpthese ( RESULTSHASHREF, [ STYLE ] )
@@ -412,7 +412,7 @@ use Exporter;
clearcache clearallcache disablecache enablecache);
%EXPORT_TAGS=( all => [ @EXPORT, @EXPORT_OK ] ) ;
-$VERSION = 1.04;
+$VERSION = 1.05;
&init;
@@ -713,7 +713,9 @@ sub timethese{
}
sub cmpthese{
- my ($results, $style) = ref $_[0] ? @_ : ( timethese( @_[0,1,2] ), $_[2] ) ;
+ my ($results, $style) =
+ ref $_ [0] ? @_
+ : (timethese (@_ [0, 1], @_ > 2 ? $_ [2] : "none"), $_ [2]);
$style = "" unless defined $style;
diff --git a/lib/Benchmark.t b/lib/Benchmark.t
index d7533c3d97..60caf434e6 100644
--- a/lib/Benchmark.t
+++ b/lib/Benchmark.t
@@ -8,7 +8,7 @@ BEGIN {
use warnings;
use strict;
use vars qw($foo $bar $baz $ballast);
-use Test::More tests => 159;
+use Test::More tests => 173;
use Benchmark qw(:all);
@@ -346,7 +346,7 @@ 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", b => "\$i = sqrt(\$i++)" }, "auto" ) ;
my $end = times;
select(STDOUT);
ok (($end - $start) > 0.05, "benchmarked code ran for over 0.05 seconds");
@@ -364,6 +364,28 @@ sub check_graph {
check_graph_vs_output ($chart, $got);
}
+# Not giving auto should suppress timethese results.
+{
+ select(OUT);
+ my $start = times;
+ my $chart = cmpthese( -0.1, { a => "++\$i", b => "\$i = sqrt(\$i++)" } ) ;
+ my $end = times;
+ select(STDOUT);
+ ok (($end - $start) > 0.05, "benchmarked code ran for over 0.05 seconds");
+
+ $got = $out->read();
+ # Remove any warnings about having too few iterations.
+ $got =~ s/\(warning:[^\)]+\)//gs;
+
+ unlike ($got, qr/running\W+a\W+b.*?for at least 0\.1 CPU second/s,
+ 'should not have title');
+ # Remove the title
+ $got =~ s/.*\.\.\.//s;
+ unlike ($got, $default_pattern, 'should not find default format somewhere');
+ like ($got, $graph_dissassembly, "Should find the output graph somewhere");
+ check_graph_vs_output ($chart, $got);
+}
+
{
$foo = $bar = 0;
select(OUT);