Yeah, it dosen't make sense to me either. I had already written the little one liner when someone here mentioned using an ST instead. For the exact same reason you stated above. I am checking the mod time of the same file at a minimum of 2 times, maybe more if the next file makes it out of the <=> operation.
Please keep in mind, this is the first time I have ever used an ST. It is pretty much copied directly from http://www.5sigma.com/perl/schwtr.html.
Here is the benchmark code I used to test it with the results. The directory had 16,108 files in it. Let me know what you think.
#!/usr/bin/perl -w
use strict;
use Benchmark;
timethese(100,
{ 'chad' => \&chad,
'swartz' => \&st,});
sub chad {
sort{ (-M $b) <=> (-M $a) } glob("*");
}
sub st {
map { $_->[0] }
sort { $a->[1] <=> $b->[1] }
map { [$_, -M] }
glob('*');
}
Here are the results of the benchmark:
Benchmark: timing 100 iterations of chad, swartz...
chad: 118 wallclock secs (56.91 usr + 47.25 sys = 104.16 CPU) @
+ 0.96/s (n=100)
swartz: 1515 wallclock secs (142.33 usr + 1044.36 sys = 1186.69 CP
+U) @ 0.08/s (n=100)
|