Desktop
Website
Multimedia
Database
Security
Enterprise
Вопрос : Сценарий 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, $len
gth_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
) =@_;
мо $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 - консультации тренировки?