PHP7: функции → опкоды

Как известно, в ПХП7 некоторые функции будут заменены на опкоды для ускорения работы. Вызов функции — дорогая операция в этом интерпретаторе, а опкоды — дёшевы. Я заглянул в исходные коды (см. функцию zend_try_compile_special_func, если интересно) и нашёл там список функций, которые заменяются в текущей версии «семёрки».

Это strlen, все функции is_* (is_float, is_string и прочие), defined, call_user_func_array, call_user_func и assert.
3 марта 2015 14:29

Степан Анчугов (инкогнито)
3 марта 2015, 15:02

Ага, как раз вот только что написал пулл-реквест, заменяющий dirname(__FILE__) на __DIR__, сравнил опкоды и задумался о том, как в Ruby происходит подобный процесс оптимизации интерпретатора. Там происходят от версии к версии примерно подобные улучшения, которые сводят на нет эффекты микрооптимизаций.

bolknote.ru (bolknote.ru)
3 марта 2015, 15:03, ответ предназначен Степану Анчугову

Ого, полезно (правда, мы в коде всё это заменили уже), можно посмотреть на пуллреквест?

Alexander (инкогнито)
4 марта 2015, 14:50

Что такое опкоды в контексте PHP? Вместо вызова функции команды будут встроены непосредственно?

bolknote.ru (bolknote.ru)
4 марта 2015, 14:55, ответ предназначен Alexander

http://php.net/manual/en/internals2.opcodes.php

q (инкогнито)
4 марта 2015, 17:05

А какие есть фундаментальные преграды для того, чтобы оптимизировать вызовы функций?

bolknote.ru (bolknote.ru)
4 марта 2015, 17:21, ответ предназначен q

В PHP7 оптимизированы будут (есть RFC уже, за него проголосовали), но опкоды всё равно дешевле.

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)