Vraag : Het manuscript die van Perl te lang duren

Ik heb een manuscript dat heel wat sorteren gebaseerd op een „eenvoudig bewegend gemiddelde“ doet dat beurtelings op 100's van series gebaseerd is. Het programma besteedt heel wat tijd het uitvoeren van math. Ik moet het versnellen. Hier is de code:
LEIDING
package; strikte
use;

sub simple_moving_avg;

my $length_of_sma = 4; @price_array

my = qw/
11.3
11.25
11.82
11.64
11.19
11.48
11.37
10.84
10.51
10.76
10.8
11.25
11.36
11.34
11.59
11.41
11.18
11.11
11.72
11.57
/;

foreach mijn (@price_array) $i {
druk „I: $i \ n“;
}
my $sma = 0; mijn
for ($count = 100000; $count >= 1; $count--) {# knalt van 4 waarden „$length_ma "
$sma = simple_moving_avg (\ @price_array, $length_of_sma); „het Eenvoudige bewegen zich/>
}/>print avg: $sma \ n“;
exit;

sub simple_moving_avg {mijn
$pointer_array = $_ [0]; mijn
$length_ma = $_ [1];
mijn $sum = 0; mijn
@tmp = @$pointer_array;

voor (mijn $count = $length_ma; $count >= 1; $count--) {mijn
$value = knalt (@tmp);
als (bepaalde $value) {
$sum = $value + $sum;
}
}
mijn $ma = sprintf („%.2f“, ($sum/$length_ma));
terugkeer $ma;
}

Here is het resultaat van het lopen DProf: verloop van tijd

Total = 1.987965 de Tijd van Seconds
User+System = 2.194965 seconden van Seconds
Exclusive Times
%Time ExclSec CumulS #Calls/vraag Csec/c Name
108. 2.377 2.377 100000 0.0000 0.0000 LEIDING:: simple_moving_avg
0.00 - -0.000 strikte 1 - -:: import
0.00 - -0.000 1 - - leiding:: BEGIN
0.00 - -0.000 strikte 1 - -:: bits
0.00 - -0.000 1 - - LEIDING:: BEGIN
/>My de vraag

Antwoord : Het manuscript die van Perl te lang duren

sub simple_moving_avg {
    mijn ($pointer_array, $length_ma) =@_;
    mijn $sum = 0;
    $sum += $ _ voor @ {$pointer_array} [0. $length_ma-1];
    terugkeer sprintf " %.2f ", $sum/$length_ma;
}
Andere oplossingen  
 
programming4us programming4us