X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FBenchmark.pm;h=ad04a754bbbab1b5dc8bebdc787e5b183db74eb9;hb=9a66ea416324d5cd1459c59e545b38c9c889fdaa;hp=d7e34f88a68bed66234c4f98438d8e7b72b77e5f;hpb=e2eb2cbd8ed8679166833621e194232a53285b6d;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/Benchmark.pm b/lib/Benchmark.pm index d7e34f8..ad04a75 100644 --- a/lib/Benchmark.pm +++ b/lib/Benchmark.pm @@ -412,6 +412,9 @@ All bugs found while writing a regression test. September, 2002; by Jarkko Hietaniemi: add ':hireswallclock' special tag. +February, 2004; by Chia-liang Kao: make cmpthese and timestr use time +statistics for children instead of parent when the style is 'nop'. + =cut # evaluate something in a clean lexical environment @@ -432,7 +435,7 @@ our(@ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $VERSION); clearcache clearallcache disablecache enablecache); %EXPORT_TAGS=( all => [ @EXPORT, @EXPORT_OK ] ) ; -$VERSION = 1.052; +$VERSION = 1.07; # --- ':hireswallclock' special handling @@ -594,7 +597,8 @@ sub timestr { $r,$pu,$ps,$pt) if $style eq 'noc'; $s=sprintf("$w wallclock secs (%$f cusr + %$f csys = %$f CPU)", $r,$cu,$cs,$ct) if $style eq 'nop'; - $s .= sprintf(" @ %$f/s (n=$n)", $n / ( $pu + $ps )) if $n && $pu+$ps; + $s .= sprintf(" @ %$f/s (n=$n)", $n / ( $style eq 'nop' ? $cu + $cs : $pu + $ps )) + if $n && ($style eq 'nop' ? $cu+$cs : $pu+$ps); $s; } @@ -644,7 +648,7 @@ sub runloop { # &runloop a lot, and thus reduce additive errors. my $tbase = Benchmark->new(0)->[1]; while ( ( $t0 = Benchmark->new(0) )->[1] == $tbase ) {} ; - &$subref; + $subref->(); $t1 = Benchmark->new($n); $td = &timediff($t1, $t0); timedebug("runloop:",$td); @@ -882,7 +886,8 @@ sub cmpthese{ for (@vals) { # The epsilon fudge here is to prevent div by 0. Since clock # resolutions are much larger, it's below the noise floor. - my $rate = $_->[6] / ( $_->[2] + $_->[3] + 0.000000000000001 ); + my $rate = $_->[6] / (( $style eq 'nop' ? $_->[4] + $_->[5] + : $_->[2] + $_->[3]) + 0.000000000000001 ); $_->[7] = $rate; }