Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Strange behavior with Benchmark

by bluescreen (Friar)
on Apr 08, 2013 at 19:33 UTC ( #1027581=perlquestion: print w/replies, xml ) Need Help??
bluescreen has asked for the wisdom of the Perl Monks concerning the following question:

Hi, Monks

I'm trying to measure to different programs and I came across to some odd results when using Benchmarks, here's the code and the results

use Time::HiRes qw(time); use Benchmark qw(:hireswallclock cmpthese); cmpthese(5, { a => sub { sleep 4 }, b => sub {sleep 6} });' # (warning: too few iterations for a reliable count) # (warning: too few iterations for a reliable count) # Rate a b #a 5000000000000000/s -- 0% #b 5000000000000000/s 0% --

What seems to be very strange is:

  • Rate 5000000000000000/s? Both have a over one second sleep so the rates should be around 0.25/s and 0.16/s.
  • One subroutine is 50% slower than the other and still show same values. Even more based on the output the slower sub seems to be the winner

I know I may be doing something wrong, but I dont know why

Replies are listed 'Best First'.
Re: Strange behavior with Benchmark
by aitap (Curate) on Apr 08, 2013 at 20:28 UTC

    This is because speed computations are done by CPU time, and a program doesn't use any CPU time while sleeping. Moreover, "real" (CPU + "other things") time is computed using time(2) and thus is measured in seconds, not any more precisely.

    You can still try to count the real execution time by using timeit and its returned Benchmark object:

    use Benchmark; use feature 'say'; say timeit(5, sub { sleep 4 })->real; say timeit(5, sub { sleep 6 })->real;

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1027581]
Approved by marto
Front-paged by ww
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (7)
As of 2018-06-20 10:15 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (116 votes). Check out past polls.