Desktop
Website
Multimedia
Database
Security
Enterprise
Questione : Scritto del Perl che prende troppo lungamente
Ho uno scritto che fa molta fascicolazione basata “su una media mobile semplice„ che a sua volta è basata su 100 degli allineamenti. Il programma sta spendendo molto tempo l'effettuazione del per la matematica. Devo accelerarlo. Qui è il codice:
------------------CONDUTTURA del
package;
use rigoroso;
sub simple_moving_avg;
my $length_of_sma = 4;
my @price_array = 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 il mio $i (@price_array) {stampa del
“io: $i \ n„;
my del
} $sma = 0;
for (mio $count = 100000; >= 1 di $count; $count--) {# gli schiocchi 4 del
di valori “$length_ma " $sma = simple_moving_avg (\ @price_
array, $len
gth_of_sma
);
}
print “: $sma \ n„;
exit; simple_moving_avg del
sub {
mio $pointer_array = $_ [0];
mio $length_ma = $_ [1];
mio $sum = 0;
il miei @tmp = @$pointer_array;
del
per (mio $count = $length_ma; >= 1 di $count; $count--) {
mio $value = schiocco (@tmp);
se ($value definito) {
$sum = $value + $sum;
del
del
}} mio $ma = sprintf (“%.2f„, ($sum/$length_ma));
$ma di ritorno;
del
}--------------------------il
Here è il risultato dalla corsa del DProf: tempo trascorso del
Total = 1.987965 tempo di Seconds
User+System = sec dei 2.194965 #Calls di Seconds
Exclusive Times
%Time ExclSec CumulS/chiamata Csec/c Name
108. 2.377 2.377 100000 0.0000 0.0000 CONDUTTURE:: simple_moving_avg
0.00 - -0.000 1 - - rigoroso:: conduttura del import
0.00 - -0.000 1 - -:: BEGIN
0.00 - -0.000 1 - - rigoroso:: CONDUTTURA del bits
0.00 - -0.000 1 - -:: BEGIN
--------la domanda del
My è: Può questo sottoprogramma del Perl essere migliorato su (il ExclSec deve essere tagliato almeno da 50%)? Non posso modificare l'allineamento che è passato nel sommergibile. Se il codice non può essere migliorato significativamente su esso fosse più veloce denominare il programma di corrente alternata ++ (sto imparando C++) o l'assemblatore? Che cosa quel codice sarebbe? Molti thanks.
class= del
Risposta : Scritto del Perl che prende troppo lungamente
simple_moving_avg secondario {
il mio ($pointer_array, $length_ma
) =@_;
mio $sum = 0;
_ di $sum += $ per @ {$pointer_array} [0. $length_ma-1
];
sprintf di ritorno " %.2f ", $sum/$length_ma;
}
Altre soluzioni
Sysprepping Windows 7 pc
Ciclaggio complesso di domanda di Coldfusion
SPContext.Current sta restituendo la posizione di segnale minimo nell'alimentatore di evento “di SPItemEventReceiver„.
IL CSS che IL MIME errato scriv dentro Firefox a macchina su Apache, il testo/css .css di AddType è là
MAcbook pro rifiuta di collegarsi via Ethernet ma impianti via il wifi
Cliente del Java applet - Eccezione di sicurezza
Mostrare tutte le annotazioni nella domanda se niente selezionato in Listbox - la parte II
Mouseover su div.a cambia la disposizione di div.b (CSS puro)
Azionamento duro PowerEdge guast 1850 di incursione 1
asp - La risorsa non ha potuto essere trovata