Zhenia
Компетентный
И так, хотелось бы рассказать о static.
static (далее статик) это некая константа переменной по отношению к функции, которую МОЖНО изменять, т.е. изменять значения, убавлять и тому подобное.
Пример:
Примеры работы производительности PHP код
Но к сожалению, статик локальной переменной после обработки функции не обнуляется и не высвобождает память, что является минусом.
Итог:
Для увелечения скорости работы, вы потеряете память.
static (далее статик) это некая константа переменной по отношению к функции, которую МОЖНО изменять, т.е. изменять значения, убавлять и тому подобное.
Пример:
PHP:
#У нас есть некая функция
function mycounter()
{
static counter; #обьявим переменную
counter = counter + 1; #прибавим к переменной число
printf("%d", counter);
}
#и есть некий цикл, где мы будем вызывать данную функцию
for (new i = 5; i < 12; i ++) mycounter();
# Если бы мы место static написали new, то вывод был таким, "1111111...", но, результат будет иначе "123456"
#Так как статик запоминает данное значения для этой функции и не дает пересоздать локальную переменную.
#Вот в чем отличие new от static
Примеры работы производительности PHP код
PHP:
#Определение факториала числа
class Math
{
function fac($v)
{
return ($v==0 || $v==1)?1:($v*Math::fac($v-1));
}
static function sfac($v)
{
return ($v==0 || $v==1)?1:($v*Math::sfac($v-1));
}
}
function gettime()
{
$arr=explode(' ',microtime());
return $arr[1]+$arr[0];
}
for($i=1;$i[=100;++$i)
{
echo $i."\t";
$v=gettime();
for($j=0;$j[$i;++$j)
Math::fac(30);
echo ((gettime()-$v)/$i*1000000)."\t";
$v=gettime();
for($j=0;$j[$i;++$j)
Math::sfac(30);
echo ((gettime()-$v)/$i*1000000)."\n";
#Среднее время работы функции объявленной без модификатора static — 64.518451690674 микросекунды.
#Среднее время работы функции объявленной с модификатором static — 31.158924102783 микросекунды
#Разница думаю видна, почти в 2 раза работа быстрее
}
Итог:
Для увелечения скорости работы, вы потеряете память.
