How Much Is the PHPish?

Під катом представлені результати експериментальної оцінки ресурсоємності виконання коду PHP та рекомендації до написання оптимального та швидкого коду...

Теория

 

Практика

//

сколько стоит обработка ошибки
...в частности передача выражения по ссылке !!!

Исследования

//

hrtime(true);

Кудрявый синтаксис vs Конкатенации

Выражение complex (curly) syntax
$result = "{$var1},{$var2},{$var3},{$var4},{$var5}";
выполняется быстрей строковой конкатенации
$result = $var1 . ','. $var2 . ','. $var3 . ','. $var4 . ','. $var5;
в среднем вдвое, на коротких значениях разница незначительна, но растет с увеличением длины фрагментов.

Кудрявый синтаксис vs implode()

Функция
$result = implode(',',$vars);
выполняется быстрей complex (curly) syntax
$result = "{$var1},{$var2},{$var3},{$var4},{$var5}";
от 10% и быстро растет с увеличением числа фрагментов.

Синтаксический сахар

Вопреки всем ожиданиям
$a = $a + 10;
выполняется в разы быстрей, чем
$a += 10;

Массивы

Добавление значения в массив
$a[] = 123;
выполняется быстро, как присвоение переменной.
Первое извлечение значения из массива
$b = $a[0];
выполняется ~20..50 раз дольше последующих (возможно это связано с построением дерева индексов). Последующие извлечения выполняются быстро, как при использовании переменной.

Извлечение и добавление значения в каскаде "многомерного" массива
$a[1][2][3] = 123;
$b = $a[1][2][3];
выполняется пропорционально числу каскадов, при этом первое извлечение значения из массива замедляется, как описано выше, однако это замедление не увеличивается пропорционально числу каскадов.

Ошибка выборки значения по несуществующему индексу
$b = $a[123];
выполняется в ~500 раз дольше обычной выборки, и в ~100 раз дольше, чем выражение с проверкой
$b = array_key_exists(123, $a)? $a[123] : 0;

//

Источники

  • Scooter - How Much Is The Fish (Official Video HQ) //youtu.be
  • Улучшение производительности PHP 7 //habr.com (20 Dec 2016)
  • Сборник советов и фактов по оптимизации PHP-скриптов //habr.com (25 Jan 2011)
  • John Lim: 63 Tips for speeding up your php application //gist.github.com
  • 40 советов по оптимизации вашего PHP-кода //habr.com (2 Apr 2008)
  • Оптимизация производительности PHP с помощью полных вызовов функций //phpprofi.ru

Leave a Reply