Как повысить производительность вызовов File :: Find :: Rule?

Я использую Файл: : Find :: Правило для поиска исполняемых пользователем папок с одноуровневой глубиной в каталоге, указанном в $ dir :

my @subDirs = File::Find::Rule->permissions(isExecutable => 1, user => "$uid")->
                                extras({ follow => 1, follow_skip => 2 })->
                                directory->
                                maxdepth(1)->
                                in( $dir );

Вот приблизительный эквивалент, использующий UNIX find :

my $subDirStr = `find $dir -maxdepth 1 -type d -user $username -perm -100`;
chomp($subDirStr); 
my @subDirs = split("\n", $subDirStr);

Оба они запускаются в сценариях, у которых есть разрешения на восстановление этих данных.

Если я запустил оператор find в командной строке, результаты вернутся мгновенно.

Если я запустил любой из вышеупомянутых операторов через Perl-скрипт, результат займет несколько секунд. .

Что я могу сделать программно для повышения производительности любого из двух подходов Perl?

9
задан Alex Reynolds 19 February 2011 в 07:30
поделиться