Наверное Offtopic: Есть ли в пхп оптимизация?

Наверное Offtopic: Есть ли в пхп оптимизация?

В интерпретаторе пхп есть ли какие-нить оптимизации?
Вот что послужило поводом к возникновению вопроса: Уже не первый развижу, как люди говорят, что вот этот код
PHP:
$count = count($my_arr);
for ( $i=0; $i < $count; $i++ )
{
    // Какие-то действия
}
будет работать быстрее
PHP:
for ( $i=0; $i < count($my_arr); $i++ )
{
    // Какие-то действия
}
А это не будет ли одно и то же?
 

voland

Guest
По идеи, во втором варианте ты каждый раз считаешь каунт, а в первом тока один... Но это только мои мысли вслух :)
 

neko

tеam neko
Loshadka
все вопросы о скорости выясняются путем измерения скорости.
проверь и посмотри.

далее.
люди которые тебе это говорят экономят на спичках.
php не предназначен для таких оптимизаций, они не имеют в нем никакого смысла.

ибо в 90% случаев парсится этот твой пример будет раза в 3 дольше чем он выполняется.
 

tony2001

TeaM PHPClub
>В интерпретаторе пхп есть ли какие-нить оптимизации?
ты перепутал интерпретатор с компилятором.
 
neko
Т.е. в пхп нет вообще никаких оптимизаций кода? Не верю...

-~{}~ 09.07.04 14:27:

tony2001
Интерпретатор - переводит код в удобное ему "внутреннее представление", а потом уж выполняет. Нигде не ошибся?
Так вот, во время трансляции с кода на языке пхп во "внутреннее представление" нет ли каких нить оптимизаций?
 

neko

tеam neko
не используй плз слово трансляция
транслируют обычно в опкоды

-
что касается внутренних оптимизаций, они могут быть, их может не быть
какая тебе разница то?
 

tony2001

TeaM PHPClub
Loshadka
я не вижу ни одной причины почему приведенный тобой пример может считаться оптимизацией.
второй вариант кода _вполне реален_ и я бы не хотел, чтобы какой-то "оптимизатор" мне превращал его в первый.
 

voland

Guest
The Zend Optimizer goes over the intermediate code generated by the standard Zend run-time compiler and optimizes it for faster execution. In addition, the Zend Optimizer enables PHP to load and execute files encoded by the Zend Encoder.

Ээ... это называеться препарсинг?
 
All
Люди - тестил дома эти два примера - наверное тест кривой, но все же - время разное. Дома стоит виндовс, апач 1.3.9, пхп 4.3.6.
Вот код теста:
PHP:
// Создаем массив из файла - желательно побольше...
$my_arr = File( "test" );

// Тестим: В переменной $s сохраняем все строки файла...
$s = "";
$mtime = microtime();
	$count = count( $my_arr );
	for ( $i=0; $i < $count; $i++ )
   	$s .= $my_arr[$i];
$mtime = microtime() - $mtime;
echo "Время работы с оптимизацией ".$mtime."<br>";

$s = "";
$mtime = microtime();
	for ( $i=0; $i < count($my_arr); $i++ )
	   $s .= $my_arr[$i];
$mtime = microtime() - $mtime;
echo "Время работы без оптимизации ".$mtime."<br>";
 

tony2001

TeaM PHPClub
Loshadka
два разных кода - два разных результата.
оптимизация тут в голове, а не в РНР.
 
tony2001
А разве это не оптимизация: Вынести из тела цикла операцию, которая каждый раз дает один и тот же результат и не зависит от "счетчика"?

-~{}~ 09.07.04 15:13:

neko
что касается внутренних оптимизаций, они могут быть, их может не быть
какая тебе разница то?
В том и вопрос - интересно: есть или нет?
Видимо нет...
 

saa

Guest
Ну и что в этом интересного? Лучше делом заняться. В первом случае ессно быстрее - это очевидно, потому как функция count() вызывается единожды, а не каждую итерацию цикла. Правда теперь можно вычислить процент "отоптимизированного" времени от общего времени выполнения скрипта с кодом. Мне, почемуто, кажется что он будет мизерным.
 

Макс

Старожил PHPClub
Loshadka
а если у меня в цикле массив каким-либо образом модифицируется ? (добавляются/удаляются элементы)
Если sizeof() будет вычисляться только один раз, код будет работать неверно.
 

tony2001

TeaM PHPClub
>А разве это не оптимизация: Вынести из тела цикла операцию,
>которая каждый раз дает один и тот же результат и не зависит от "счетчика"?
нет, это изменение логики.
 
Maxim Matyukhin
Не спорю - в этом случае for( ; count(...) ; )...

saa
Например, компиляторы этот код оптимизировали бы...

All
Кто нибудь знает: есть какие-нибудь оптимизации?
 
tony2001
хм... это что значит, то что этот код и компиляторы бы не оптимизировали бы?
 
Сверху