in reply to Re^4: grep for lines containg two variables
in thread grep for lines containg two variables

I am not sure I understand your points

Change q{ to q{use strict; or q{print scalar @data; and you'll see. You've updated your node, but the problem is still there. @data is empty in the tests, because the tests are using our @main::data and not the my @data that holds the test file.

listing above was posted as pseudo code and not the actual code run

That's rather silly.

since diff boxes have different performance depending on input_files, strings, mem., proc. etc -

Sorry, but your machine is not 540x faster than mine. Change q{ to sub { and you'll see.

Replies are listed 'Best First'.
Re^6: grep for lines containg two variables
by l3v3l (Monk) on Dec 08, 2005 at 19:55 UTC
    Right! thank you for the pointers/clarification - makes sense now!!!! and this is now valid: (?)
    #!/usr/bin/perl -w # usage : ./this_script.pl input_file > captured_benchmarks use strict; use Benchmark; my @data = do { open(my $fh, '<', $0) or die; <$fh> }; timethese (1000000, { grep_and => sub{ my @res1 = grep /GGGGGACACCTTCTCTCTCT/ && /RH_MEa0001bG06/,@data; }, double_grep => sub{ my @res2 = grep /GGGGGACACCTTCTCTCTCT/,grep /RH_MEa0001bG06/,@data +; }, lookahead_grep => sub{ my @res3 = grep /^(?=.*GGGGGACACCTTCTCTCTCT)(?=.*RH_MEa0001bG06)/, +@data; } } );
    because I get the following now:
    Benchmark: timing 1000000 iterations of double_grep, grep_and, lookahe +ad_grep... double_grep: 11 wallclock secs ( 9.06 usr + 0.00 sys = 9.06 CPU) @ 1 +10350.92/s (n=1000000) grep_and: 8 wallclock secs ( 8.70 usr + 0.00 sys = 8.70 CPU) @ 11 +4902.91/s (n=1000000) lookahead_grep: 21 wallclock secs (20.31 usr + 0.00 sys = 20.31 CPU) +@ 49231.98/s (n=1000000)