Ads
Comments 12
0
После стек-ориентированных ассемблеров JVM / .NET внутренности PHP выглядят… ожидаемо, но непривычно. Особенно вскрывают мозг опкоды типа ECHO и YIELD. Интересно, насколько такой формат байт-кода более (менее?) пригоден для оптимизации.
0
Кто нибудь может пояснить практическую пользу этих знаний? Можно ли сказать, что если я знаю как работает виртуалка, я знаю как работает C? Я не тролю, просто не в курсе.
0

Ну например можно понять почему необычный код работает так необычно. Предлагаю на практике посмотреть какие опкоды генерирует строка:


echo print(5) . print(6) . print(7);

Т.к. без понимания этого — результат выполнения может порушить психику особо восприимчивых :D

0
Ну тут можно ещё просто помнить что print это не функция и соответственно скобки тут ничего не дают.

Потому будет:
761511
так как выполнение будет справа на лево работать.
0

Ну это довольно очевидно для тех, кто знает, что пых правоассоциативный. Хорошо, а в этом варианте?


$items = [1, 2, 3, 4];

foreach ($items as &$i) {
    var_dump($i);
}

foreach ($items as $i) {
    var_dump($i);
}

Эту особенность, думаю, как раз через опкоды только можно раздебажить. У меня логических объяснений нет.

+2
Последняя ссылка из первого цикла останется висеть.
Для подобных циклов крайне рекомендуется после цикла писать
unset($i);

Полагаю будет происходить следующее.
Каждый элемент массива будет записываться в последний элемент массива и второй вывод даст последовательность:
1,2,3,3
0
В таких случаях это должно быть требование, а не рекомендация.
0
а что даст виртуальная машина для php? теперь код нужно компилировать?
+1

Что значит "даст"? VM в пыхе ещё со время fi версии есть. Тот же опкеш и ускоряет загрузку путём избавления кеширования байткода и выгрузки оного напрямую в VM, ну если грубо.

0

*Прошу прощения, по-инопланетянски написал =)


Имел ввиду, что опкеш сразу отдаёт в VM на выполнение байткод, вместо чтения и парсинга файлов каждый раз.

0
Кому интересно — вот отличный доклад Дмитрия Стогова, основного разработчика этой самой виртуальной машина PHP, про ее внутреннее устройство и перфоманс:

Only those users with full accounts are able to leave comments.  , please.