PHP
имеет функцию trader_sma
для расчета скользящей средней.Поскольку концепция проста, я попытался написать функцию для этого.Для этого я сохранил последние n
элементы в массиве во время цикла, как
function sma($array,$period){
foreach($array as $element){
$c[$element[0]]=$element[1];
if(count($c)>$period){
$garbage = array_shift($c);
$average = array_sum($c)/$period;
$result[]=array($element[0],$average);
}
}
return($result);
}
, где входные и выходные массивы имеют структуру array(array(['x'],['y']))
Функцияработает отлично, но при больших входах PHP trader_sma
работает в 10 раз быстрее, чем моя функция.Поэтому я пришел к выводу, что мои функции не являются правильными или, по крайней мере, эффективными.
Есть ли у вас какие-либо предложения?