#!/usr/bin/perl use strict; use Benchmark; use File::Find::Rule; ( @ARGV == 1 and -d $ARGV[0] ) or die "Usage: $0 some/path\n"; print "started at ", scalar localtime, $/; timethese( 10, { 'Shell-find pipe' => \&try_pipe, 'file::Find::Rule' => \&try_ffr, }); sub try_ffr { my @f = File::Find::Rule->file()->name( '*.pm' )->in( $ARGV[0] ); print scalar @f, " .pm files found under $ARGV[0] at ", scalar localtime, $/; } sub try_pipe { open( FIND, "find $ARGV[0] -name '*.pm' |" ); my @f = ; print scalar @f, " .pm files found under $ARGV[0] at ", scalar localtime, $/; } __END__ # sample run: $ ffr-bm.pl /usr started at Sun Jul 16 23:48:33 2006 Benchmark: timing 10 iterations of Shell-find pipe, file::Find::Rule... 481 .pm files found under /usr at Sun Jul 16 23:48:41 2006 481 .pm files found under /usr at Sun Jul 16 23:48:44 2006 481 .pm files found under /usr at Sun Jul 16 23:48:46 2006 481 .pm files found under /usr at Sun Jul 16 23:48:48 2006 481 .pm files found under /usr at Sun Jul 16 23:48:50 2006 481 .pm files found under /usr at Sun Jul 16 23:48:52 2006 481 .pm files found under /usr at Sun Jul 16 23:48:53 2006 481 .pm files found under /usr at Sun Jul 16 23:48:55 2006 481 .pm files found under /usr at Sun Jul 16 23:48:57 2006 481 .pm files found under /usr at Sun Jul 16 23:48:59 2006 Shell-find pipe: 26 wallclock secs ( 0.03 usr 0.04 sys + 8.73 cusr 5.79 csys = 14.59 CPU) @ 142.86/s (n=10) 481 .pm files found under /usr at Sun Jul 16 23:49:19 2006 481 .pm files found under /usr at Sun Jul 16 23:49:41 2006 481 .pm files found under /usr at Sun Jul 16 23:49:59 2006 481 .pm files found under /usr at Sun Jul 16 23:50:14 2006 481 .pm files found under /usr at Sun Jul 16 23:50:29 2006 481 .pm files found under /usr at Sun Jul 16 23:50:44 2006 481 .pm files found under /usr at Sun Jul 16 23:51:02 2006 481 .pm files found under /usr at Sun Jul 16 23:51:24 2006 481 .pm files found under /usr at Sun Jul 16 23:51:42 2006 481 .pm files found under /usr at Sun Jul 16 23:51:57 2006 file::Find::Rule: 178 wallclock secs (33.39 usr + 53.05 sys = 86.44 CPU) @ 0.12/s (n=10)