in reply to Question with Benchmark.pm

It works like this :
#!/usr/bin/perl use strict; use warnings; use Benchmark qw[cmpthese timethese]; my @A = qw[this that these those]; my $result; open my $null, '>', '/dev/null' or die; $result = timethese( -5, { test => sub { print {$null} "@A" }, with_for => sub { print {$null} $_ for @A }, with_join => sub { print {$null} join '', @A }, } ); cmpthese( $result, 'none' );

OUTPUT : Benchmark: running test, with_for, with_join for at least 2 CPU second +s... test: 3 wallclock secs ( 2.03 usr + 0.01 sys = 2.04 CPU) @ 64 +2509.31/s (n=1310719) with_for: 1 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 49 +4696.26/s (n=1058650) with_join: 2 wallclock secs ( 2.16 usr + 0.00 sys = 2.16 CPU) @ 93 +5679.63/s (n=2021068)
HTH,
PooLpi

Replies are listed 'Best First'.
Re^2: Question with Benchmark.pm
by lihao (Monk) on Dec 13, 2007 at 21:04 UTC

    Hi, guys:

    Thank you so much for your time and suggestions, I finally used PooLpi's solution which looks easy to implement, and I will remember the potential side-effects of "use Benchmark" under IO

    BTW. I also came up with another way: what about putting the running script into the background and then print the result into an external tmp file or whatever, i.e.(with my original script, under bash, Linux for sure)

    stty tostop perl mytest.pl > result.txt & tail -n4 result.txt

    Any side effects with this approach?? Thanks

    Best,

    Lihao(XC)