in reply to Re: Re: Is too little too much? Coding under the microscope...
in thread Is too little too much? Coding under the microscope...

Err, yes the logic is correct. But why don't just write that as simple as this?
$newest = (sort { -M $a <=> -M $b } <*.log>)[0];
or if you have large amount of files, you'd better cache the result of -M:
$newest= (sort { ($m{$a} ||= -M $a) <=> ($m{$b} ||= -M $b) } <*.log>)[ +0];

Replies are listed 'Best First'.
Re: Is too little too much? Coding under the microscope...
by Abigail (Deacon) on Jun 28, 2001 at 20:57 UTC
    Well, if you have a large amount of files and you want to find the newest, the only reasonable optimization of your sort is the removal of said sort! You don't need more than a single pass (using linear time) to find an extreme.
    my $extreme = [365_000, undef]; foreach (<*.log>) { $extreme = [-M, $_] if $extreme -> [0] > -M } my $newest = $extreme -> [1];
    And if you want to sort them, faster than an Orcish Maneuvre or a Schwartian Transform is the Guttman-Rosler Transform:
    @files = map {substr $_ => 18} sort map {sprintf "%017.10f %s" => -M, $_} <*.log>;

    -- Abigail