Даст ли улучшение производительности ручной inline функций и замена include содержимым вызываемого файла?
index.php
<?php
function hw() {
echo 'Hello world!';
}
hw();
include('file.php');
?>
file.php
<?php
echo 'Something text...';
?>
Это можно преобразовать в следующее:
<?php
echo 'Hello world!';
echo 'Something text...';
?>
Вопросы: будет ли прирост производительности? Существуют ли программы для автоматической оптимизации скриптов таким способом?
Проблема в том, что этот синтетический тест ничего нового нам не скажет. Со временем первый вариант с 1 файлом превратится в вермишель из кода, который будет трудно поддерживать, а второй будет более читабельным и ради этого стоит экономить 0.00024676322937011s?
По мне не стоит зацикливаться на времени работы программы настолько, чтоб не использовать фишки языка ради ложного чувства скорости, в программах есть более тонкие места в виде подключения и запросов в БД, неправильное чтение файла или медленный алгоритм.
Если вам нужно ускорить php код, можно использовать HHVM, транслятор от Faсebook, который транслирует php код в код на С++, Doc: https://docs.hhvm.com/, и src: https://github.com/facebook/hhvm
Первый вариант:
$a = microtime(true);
function hw() {
echo 'Hello world!';
}
hw();
include('file.php');
printf(PHP_EOL."%.16f".PHP_EOL, microtime(true)-$a);
Время: 0.00040197372436523
Второй вариант:
$a = microtime(true);
echo 'Hello world!';
echo 'Something text...';
printf(PHP_EOL."%.16f".PHP_EOL, microtime(true)-$a);
Время: 0.00015521049499512
Будет ли прирост производительности?
Да, это называется инлайнингом. Вызов любой подпрограммы (на каком бы языке вы не писали) всегда требует накладные расходы - прыжки непосредственно по коду, работу со стэком и прочее. Тем не менее, эти расходы практически не имеют особого значения для PHP, потому что он сам по себе достаточно тяжел и его не имеет смысла использовать там, где критична производительность, большую часть времени PHP, как правило, тратит не на работу прцоессора и работу с памятью, а на I/O. В вашем случае куда больше пользы принесет оптимизация БД и работы с ней.
Непосредственно инлайн файла выглядит куда более интересным, однако кэш операционной системы и opcache все равно прокэшируют его после первой загрузки, поэтому дальше плясать нет смысла.
Существуют ли программы для автоматической оптимизации скриптов таким способом?
Для PHP - нет, и вряд ли будут из-за их ненужности. По-хорошему заниматься этим все равно должен компилятор, но из-за динамической типизации языка это вряд ли возможно осуществить достаточно эффективно.
Продвижение своими сайтами как стратегия роста и независимости