Microsoft
Software
Hardware
Network
Question : Manuscrit de Perl prenant trop longtemps
J'ai un manuscrit qui fait beaucoup de tri basé sur « une moyenne mobile simple » qui alternativement est basée sur 100 de rangées. Le programme dépense exécuter beaucoup de temps les maths. Je dois l'accélérer. Voici le code :
------------------FORCE du
package ;
use strict ;
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 mon $i (@price_array) {copie de
« je : $i \ n » ;
my du
} $sma = 0 ;
for (mon $count = 100000 ; >= 1 de $count ; $count--) {# bruits 4
de valeurs de « $length_ma " $sma = simple_moving_avg (\ @price_
array, $len
gth_of_sma
) ;
/>print « : $sma \ n » ;
exit ; simple_moving_avg du
sub {
mon $pointer_array = $_ [0] ;
mon $length_ma = $_ [1] ;
mon $sum = 0 ;
mon @tmp = @$pointer_array ;
du
pour (mon $count = $length_ma ; >= 1 de $count ; $count--) {
mon $value = bruit (@tmp) ;
si ($value défini) {
$sum = $value + $sum ;
du
du
}} mon $ma = sprintf (« %.2f », ($sum/$length_ma));
$ma de retour ;
du
}--------------------------le
Here est le résultat de courir DProf : temps écoulé du
Total = 1.987965 temps de Seconds
User+System de = sec 2.194965 #Calls de Seconds
Exclusive Times
%Time ExclSec CumulS/appel Csec/c Name
108. 2.377 2.377 100000 0.0000 0.0000 FORCE : : simple_moving_avg
0.00 - -0.000 1 - - strict : : force de l'import
0.00 - -0.000 1 - - : : BEGIN
0.00 - -0.000 1 - - strict : : FORCE du bits
0.00 - -0.000 1 - - : : BEGIN
--------la question du
My est : Cette sous-routine de Perl peut-elle être améliorée au moment (l'ExclSec doit-il être coupé au moins de 50%) ? Je ne peux pas modifier la rangée étant passée dans le sous-marin. Si le code ne peut pas être sensiblement amélioré au moment il serait plus rapide pour appeler le programme de C.A. ++ est-ce que (j'apprends C++) ou l'assembleur ? Queest-ce que ce code serait ? Beaucoup de thanks.
class= de
Réponse : Manuscrit de Perl prenant trop longtemps
simple_moving_avg secondaire {
mon ($pointer_array, $length_ma
) =@_ ;
mon $sum = 0 ;
_ de $sum += $ pour @ {$pointer_array} [0. $length_ma-1
] ;
sprintf de retour " %.2f ", $sum/$length_ma ;
}
Autres solutions
MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
Emplacement primaire de deux SCCM dans l'annuaire actif
L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
Stocker le dossier dans le mysql using connector.net et le champ de goutte
Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
Winzip 12 issues de secours du travail ?