19
Некоторые примеры маленькой оптимизации php кода для помешанных на оптимизации
Программирование
Метки (теги) : strlen, инкремент, оптимизация кода
В этом посте я приведу примеры скорости работы различных действий написанных на языке программирования – php (Hypertext Preprocessor).
Всё действо происходит на компьютере под Windows 7 (1,76 Гц двухядерный процессор, 1 гиг оперативки)
Инкремент $i++, $i+=1, $i=$i+1
$i++
<?php
$time = time();
$microtime = microtime();
for($i=0;$i<10000;$i++){}
echo (time()-$time).’ / ‘.(microtime()-$microtime);
Время выполнения – дольше 0.0136 секунды
$i=$i+1
<?php
$time = time();
$microtime = microtime();
for($i=0;$i<100000;$i=$i+1){}
echo (time()-$time).’ / ‘.(microtime()-$microtime);Время выполнения – дольше 0.0176 секунды
$i+=1
<?php
$time = time();
$microtime = microtime();
for($i=0;$i<100000;$i+=1){}
echo (time()-$time).’ / ‘.(microtime()-$microtime);Время выполнения – дольше 0.0168 секунды
Итог: в данном случае быстрее всех работает $i++, медленнее $i=$i+1
Ну вот парадокс, если тестовый код немного изменить, то вот что получается:
$i++
<?php
$time = time();
$microtime = microtime();
$j=0;
for($i=0;$i<10000;$i++){$j++}
echo (time()-$time).’ / ‘.(microtime()-$microtime);Время выполнения – дольше 0.0216 секунды
$i=$i+1
<?php
$time = time();
$microtime = microtime();
$j=0;
for($i=0;$i<100000;$i++){$j=$j+1;}
echo (time()-$time).’ / ‘.(microtime()-$microtime);Время выполнения – дольше 0.0228 секунды
$i+=1
<?php
$time = time();
$microtime = microtime();
$j=0;
for($i=0;$i<100000;$i++){$j+=1;}
echo (time()-$time).’ / ‘.(microtime()-$microtime);Время выполнения – дольше 0.0181 секунды
Итог: в данном случае быстрее всех работает $i+=1, медленнее $i=$i+1
Вывод: в разных случаях нужно применять разные методы инкрементации в php
Следующим на очереди мой любимый строковый метод strlen.
Смотрим и удивляемся
Продолжение следует …