- or download this
my @look = <DATA>;
my @out = sort { (split '\|', $a, 12)[4] <=> (split '\|', $b, 12)[4] }
+ @look;
foreach my $line (@out) {
...
accu-b|36|0|0|103|0|38|0|0|0|0|2|0|
accua|35|0|0|27|0|37|0|0|0|0|1|0|
[...]
- or download this
## tested
my @out =
map { substr $_, 6 } ## hardcoded "6" here...
sort
map { my $val = (split /\|/)[4]; sprintf "%06d$_",$val } ## ... a
+nd here
<DATA>;
- or download this
my @d = <DATA>; my @e; my @key = map { (split /\|/)[4] } @d;
use Benchmark qw/cmpthese/;
cmpthese (4e4, {
...
raw => sub { @e = sort { (split '\|', $a, 12)[4] <=> (split '\|
+', $b, 12)[4] } @d; },
ambrus => sub { @e = @d[ sort { $key[$a] <=> $key[$b] } 0 .. @d -
+1 ]; },
});
- or download this
Rate raw grt ambrus
raw 2742/s -- -58% -92%
grt 6547/s 139% -- -80%
ambrus 33058/s 1106% 405% --