Вопрос : Сценарий Perl принимая слишком длиной

Я имею сценарий делает много сортировать основанный на «просто скользящей средней» в свою очередь основана на 100 из блоков. Программа тратит долговременно выполнять математику. Я должен быстро пройти оно вверх. Здесь Кодий:
------------------ОСНОВА
package;
use только;

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 мое $i (@price_array) {печать
«я: $i \ n»;
my
} $sma = 0;
for (мое $count = 100000; >= 1 $count; $count--) {# шипучки 4
значений «$length_ma " $sma = simple_moving_avg (\ @price_array, $length_of_sma);
/>print «просто moving: $sma \ n»;
exit; simple_moving_avg

sub {
мое $pointer_array = $_ [0];
мое $length_ma = $_ [1];
мое $sum = 0;
мои @tmp = @$pointer_array;

для (мо $count = $length_ma; >= 1 $count; $count--) {
мое $value = шипучка (@tmp);
если (определенное $value), то {
$sum = $value + $sum;


}} мое $ma = sprintf («%.2f», ($sum/$length_ma));
возвращенное $ma;

}--------------------------
Here будет результат от бежать DProf: истекшее време

Total = 1.987965 время Seconds
User+System = sec 2.194965 #Calls Seconds
Exclusive Times
%Time ExclSec CumulS/звонок Csec/c Name
108. 2.377 2.377 100000 0.0000 0.0000 ОСНОВА:: simple_moving_avg
0.00 до -0.000 1 - - только:: основа import
0.00 до -0.000 1 - -:: BEGIN
0.00 до -0.000 1 - - только:: ОСНОВА bits
0.00 до -0.000 1 - -:: BEGIN
--------вопрос в том, что
My: Можно эту подпрограмму perl улучшить на (ExclSec нужно быть отрезанным хотя бы 50%)? Я неспособен доработать блок будучи ым в подводную лодку. Если Кодего нельзя значительно улучшить на оно было бы быстре для того чтобы вызвать программу A.C. ++ (я учу C++) или сборщик? То Кодий было бы? Много thanks.
class=

Ответ : Сценарий Perl принимая слишком длиной

sub simple_moving_avg {
    мое ($pointer_array, $length_ma) [email protected]_;
    мо $sum = 0;
    _ $sum += $ для @ {$pointer_array} [0. $length_ma-1];
    возвращенное sprintf " %.2f ", $sum/$length_ma;
}
Другие решения  
  •  Как я добавляю кнопки на форме PDF для того чтобы добавить/извлекаю рядки данных?
  •  Шнур ошибки в блоке задвижки?
  •  сколько вариант сервера SQL на одной машине
  •  Внешний вид 2007 не может архивный файл открытой сети сохраненный
  •  Активно директория DNS записывает вопрос
  •  Отчет о доступа 2010 экспорта к CSV с коллекторами?
  •  Прокладчик OCE 9400 не начинает
  •  как добавить десятичное место в формуле в отчете о кристалла seagate
  •  Windows XP и Мичрософт Оутлоок и проблемы установителя Windows
  •  VB6 к VS2010 - консультации тренировки?
  •  
    programming4us programming4us