>да классно, думаю будет быстрее, неа, этот вариант полностью сливает твоему, в основном из-за <*>
Лидеры:
sub get_sorted_file_list11($) {
my( $dir, @files, @ctime, @sorted );
$dir = shift;
if( opendir( DIR, $dir ) ) {
@files = grep { -f } map {"$dir/$_"} readdir(DIR);
closedir(DIR);
@ctime = map { (stat)[10] } @files;
@sorted = @files[ sort{ $ctime[$a] <=> $ctime[$b] } 0..$#files ];
} else {
warn $!;
}
return @sorted;
}
sub get_sorted_file_list10($) {
my( $dir, @files, @ctime, @sorted );
$dir = shift;
if( opendir( DIR, $dir ) ) {
@files = grep { -f } map {"$dir/$_"} readdir(DIR);
closedir(DIR);
@ctime = map { -C } @files;
@sorted = @files[ sort{ $ctime[$b] <=> $ctime[$a] } 0..$#files ];
} else {
warn $!;
}
return @sorted;
}
sub get_sorted_file_list8($) {
my( $dir, @files );
$dir = shift;
if( opendir(DIR, $dir) ) {
@files = map { $_->[0] }
sort { $b->[1] <=> $a->[1] }
grep { -f $_->[0] }
map { [ "$dir/$_", -C "$dir/$_" ] }
readdir(DIR);
closedir(DIR);
} else {
warn "Can not open dir [$dir]: $!\n";
}
return @files;
}
Benchmark: timing 10000 iterations of var10, var11, var8...
var10: 53 wallclock secs (13.47 usr + 36.22 sys = 49.69 CPU) @ 201.26/s (n=10000)
var11: 58 wallclock secs (17.66 usr + 37.02 sys = 54.68 CPU) @ 182.88/s (n=10000)
var8: 55 wallclock secs (14.72 usr + 37.12 sys = 51.84 CPU) @ 192.92/s (n=10000)
>тока сортировка у тебя почему то в
>обратном порядке стала.
-M -A и -С возвращают число дней, чем больше результат, тем старее файл. Вроде все правильно, результаты по крайней мере сходятся с ожидаемыми )))