хотя если циклы поставить в коде:my $s = ';l9348ks5fl\n414cs043sf68f';
for ($i=0; $i < 1000000; $i++){
my $r = '';
my $sum = 1;
while ($s =~ /(.)/g){
my $c = $1;
if ($c =~ /\d/){ $r .= $c
}else{
if ($r ne ''){
$sum *= $r; $r='';
}
}
}
print "$sum\n";
}
и:
import re
s = ';l9348ks5fl\n414cs043sf68f'
for i in range(1000000):
exp=re.compile('\D+')
filter(lambda x: len(x)>0 ,exp.split(s))
print reduce(lambda x,y:int(x)*int(y), filter(lambda x: len(x)>0 ,exp.split(s)))
имеем:
# time ./test.pl > /dev/null
26.338u 0.000s 0:26.36 99.8% 5+1297k 0+0io 0pf+0w
# time ./test.py > /dev/null
27.281u 0.022s 0:27.34 99.8% 1287+1224k 0+0io 0pf+0w
разница теперь не такая большая.