Felix Geerinckx wrote at Wed, 29 May 2002 17:17:38 +0200: > on Wed, 29 May 2002 16:10:40 GMT, [EMAIL PROTECTED] (Janek Schleicher) wrote: > >> Oops, there's a typo :-(( >> >> Of course, I meant >> @sorted = reverse sort { $myhash{$a} <=> $myhash{b} } keys %myhash; > > There's another typo.
Year, I must have been drunken :-( > And I'd rather add > > # sort keys in descending numerical order > > than suffering a substantial speed penalty by using 'reverse'. Allthough, I can't get familiar with the exchanging of $a and $b. When I try to read a source code, I see sort { ${} <=> ${} } ... and I expect that the sort routine goes normal. I checked now for the first time, how much time an extra reverse cost. I had always expected that the compiler does a code optimization for itself, when he sees reverse sort { ... }, there shouldn't be a problem to interprete it. as sort { -(...) }. However perl does not. But the last syntax is as quick as the normal sort routine: use Benchmark; my @list = (); push @list, rand() while ($i++ < 500_000); timethis( 100, sub {sort {$a <=> $b} @list} ); timethis( 100, sub {sort {-($a <=> $b)} @list} ); prints: timethis 100: 2 wallclock secs ( 2.84 usr + 0.01 sys = 2.85 CPU) @ 35.09/s (n=100) timethis 100: 3 wallclock secs ( 2.85 usr + 0.00 sys = 2.85 CPU) @ 35.09/s (n=100) So I decided for myself, to write reverse sort { ... } when it's not time critical and the lists are small and to write sort { -(...) } when it's time critical. (I like it more than writing a command - the program has to be self explaining) Thanks a lot to Felix for his hint. Greetings, Janek -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]