#!/usr/bin/perl use strict; use warnings; use Benchmark qw /cmpthese/; chdir shift or die; cmpthese -5 => { glob => sub { 1 while glob '*'; }, readdir => sub { opendir my $dh, '.' or die; 1 while readdir $dh; }, }; __END__ $ mkdir x ; cd x ; touch `seq 1 20000` ; cd .. $ perl glob_vs_readdir.pl x Benchmark: running glob, readdir for at least 5 CPU seconds... glob: 6 wallclock secs ( 4.02 usr + 1.07 sys = 5.09 CPU) @ 5.30/s (n=27) readdir: 6 wallclock secs ( 3.93 usr + 1.37 sys = 5.30 CPU) @ 65.28/s (n=346) Rate glob readdir glob 5.30/s -- -92% readdir 65.3/s 1131% --