TL; DR
Делайте то, что правильно с архитектурной точки зрения, и забудьте о попытках выполнить микрооптимизацию самостоятельно.Если вы хотите, чтобы во всех вычислениях использовалось одно и то же значение, кэшируйте его.
Пояснение.
Существуют издержки при вызове любой функции в PHP.Когда вы вызываете функцию, PHP должен создать стековый фрейм в памяти, который содержит информацию о вызове, такую как значения параметров, расположение в коде и т. Д. Это занимает некоторое время, а такжезаймет немного памяти.Требуемый объем памяти варьируется, но обычно невелик, из-за того, что PHP передает объекты по ссылке и копирование при записи механика.Таким образом, если вы не изменяете большие строковые / двоичные данные в своей функции, накладные расходы должны быть незначительными.Тем не менее, вы должны использовать второй подход, то есть тот, который «кэширует» значение, потому что из PoV потребителя ни при каких обстоятельствах my_function()
не гарантируется , чтобы каждый раз возвращать одно и то же значение.
Год за годом PHP все больше и больше оптимизируется.Примеры включают в себя zVal и opcache.Эти улучшения приводят к автоматической оптимизации вменяемых инструкций.Попытка возиться с этим может фактически привести к тому, что PHP не сможет оптимизировать вашу программу.Над этим работают очень знающие и способные люди, и вам не нужно делать ничего особенного, чтобы воспользоваться автоматической оптимизацией.Вместо этого сосредоточьтесь на архитектуре и концептуальной точности вашего кода, на его нормализации. Компиляторы все больше оптимизируются, аппаратное обеспечение становится все лучше и дешевле с каждым годом, без вашего участия;но ваш код не нормализуется сам по себе .