Я делаю базовую попиксельную обработку изображения размером 500x500 пикселей.Независимо от того, какое уравнение я вставил, если ему не хватает памяти, оно делает это за ужасное количество времени.
Сравните этот скрипт:
define('STARTED_AT',microtime(true));
set_time_limit(0);
function calculatesomething(){ return abs(100-round(pow(15/150,2)))+pow(2,4) - calculatesomething2(); }
function calculatesomething2(){ return abs(100-round(pow(15/150,2)))+pow(2,4) - calculatesomething3(); }
function calculatesomething3(){ return abs(100-round(pow(15/150,2)))+pow(2,4); }
$r = array();
foreach(range(1,pow(10,5)) as $x){
foreach(range(1,4) as $y)
$r[] = calculatesomething();
}
$o = (microtime(true)-STARTED_AT);
echo 'took '.$o.'ms to finish';
потребовалось 38,847129106522s, чтобы закончить
А вот это:
define('STARTED_AT',microtime(true));
set_time_limit(0);
function calculatesomething(){ return abs(100-round(pow(15/150,2)))+pow(2,4) - calculatesomething2(); }
function calculatesomething2(){ return abs(100-round(pow(15/150,2)))+pow(2,4) - calculatesomething3(); }
function calculatesomething3(){ return abs(100-round(pow(15/150,2)))+pow(2,4); }
$r = array();
foreach(range(1,pow(10,5)) as $x){
$r[] = abs(100-round(pow(15/150,2)))+pow(2,4) - ( abs(100-round(pow(15/150,2)))+pow(2,4) - ( abs(100-round(pow(15/150,2)))+pow(2,4) ));
$r[] = abs(100-round(pow(15/150,2)))+pow(2,4) - ( abs(100-round(pow(15/150,2)))+pow(2,4) - ( abs(100-round(pow(15/150,2)))+pow(2,4) ));
$r[] = abs(100-round(pow(15/150,2)))+pow(2,4) - ( abs(100-round(pow(15/150,2)))+pow(2,4) - ( abs(100-round(pow(15/150,2)))+pow(2,4) ));
$r[] = abs(100-round(pow(15/150,2)))+pow(2,4) - ( abs(100-round(pow(15/150,2)))+pow(2,4) - ( abs(100-round(pow(15/150,2)))+pow(2,4) ));
}
$o = (microtime(true)-STARTED_AT);
echo 'took '.$o.'ms to finish';
потребовалось 29
.651962041855s, чтобы закончить
Только труднозакодировал вложенные итерации и дополнительные вызовы функций и получил 9
мс.У меня 2,4 ГГц двухъядерный и 4 ГБ оперативной памяти;Разве не должно быть иначе?Что я могу сделать, чтобы улучшить вычислительные возможности PHP?