Під катом представлені результати експериментальної оцінки ресурсоємності виконання коду 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