Size: a a a

2020 October 28

AL

Alexander Lisachenko in PHP
Aleksandr Khristenko
Ну я к тому что пока мы это не можем пхп интерпретируемый язык.
Если мой доклад сегодня смотрели - я там показывал как машинный код из PHP определять и вызывать, так что граница становится размытой
источник

A

Aleksandr Khristenko in PHP
Alexcc
Та ладно а можно примеры
Сейчас с телефона не предоставлю. Но у jit есть возможность производить оптимизации на основе статистики выполнения. Иногда это в итоге приводит к более продуктивному коду. Плюс при изменении картины нагрузки он может адаптироваться емнип.
источник

A

Alexcc in PHP
Aleksandr Khristenko
Сейчас с телефона не предоставлю. Но у jit есть возможность производить оптимизации на основе статистики выполнения. Иногда это в итоге приводит к более продуктивному коду. Плюс при изменении картины нагрузки он может адаптироваться емнип.
Горячие функции прикольная вещь но такие оптимизации везде могут бытт
источник

AL

Alexander Lisachenko in PHP
Aleksandr Khristenko
Сейчас с телефона не предоставлю. Но у jit есть возможность производить оптимизации на основе статистики выполнения. Иногда это в итоге приводит к более продуктивному коду. Плюс при изменении картины нагрузки он может адаптироваться емнип.
Это и есть Profile Guided Optimisation
источник

A

Aleksandr Khristenko in PHP
Alexander Lisachenko
Почитайте про Profile Guided Optimisation (PGO)
Ну они и для компиляторов есть вроде. Но их активно не используют.
источник

A

Alexcc in PHP
И да я знаю как работает v8 прямой пример JIT
источник

AL

Alexander Lisachenko in PHP
Alexander Lisachenko
Это и есть Profile Guided Optimisation
Когда при компиляции кода используется профиль выполнения чтобы лучше расположить участки кода
источник

AL

Alexander Lisachenko in PHP
В итоге такой код работает на 5-7% быстрее в аналогичных ситуациях чем просто скомпилированный код
источник

A

Alexcc in PHP
Ну надо не забывать что JIT нужен байт код как не крути
источник

A

Aleksandr Khristenko in PHP
Artem Molotov
Ну вот шарп подобным образом хитрит (если я не ошибаюсь). Он компилируемый или интерпритируемый? Или и то, и другое одновременно (относительно конкретного бинаря)? Я вот затрудняюсь ответить.
Так а я не против если пхп назовут и тем и другим одновременно. Мне не нравится категорична я формулировка что пхп это не интерпретатор.
источник

AM

Artem Molotov in PHP
Alexcc
Ну надо не забывать что JIT нужен байт код как не крути
И?
источник

AM

Artem Molotov in PHP
Aleksandr Khristenko
Так а я не против если пхп назовут и тем и другим одновременно. Мне не нравится категорична я формулировка что пхп это не интерпретатор.
+
источник

A

Alexcc in PHP
Это накладка в не компилируемых языках как js например
источник

AL

Alexander Lisachenko in PHP
Alexcc
Ну надо не забывать что JIT нужен байт код как не крути
Не обязательно, JIT может в итоге заменять байт-код нативным машинным кодом. Для PHP это точно будет так со временем, что даст возможность иметь скорость как сишного метода.
источник

AM

Artem Molotov in PHP
Alexcc
Это накладка в не компилируемых языках как js например
Почему накладка? Байт-код для JIT может быть оптимизирован более лучше, как уже выше неоднократно уточняли
источник

AM

Artem Molotov in PHP
Alexander Lisachenko
Не обязательно, JIT может в итоге заменять байт-код нативным машинным кодом. Для PHP это точно будет так со временем, что даст возможность иметь скорость как сишного метода.
До первого запуска вроде как обязателен
источник

A

Alexcc in PHP
Если уж прям вообще углубится то надо помнить про context switch и сколько это будет стоить
источник

AL

Alexander Lisachenko in PHP
Artem Molotov
До первого запуска вроде как обязателен
Само-собой, я бы даже сказал первых N запусков )
источник

AM

Artem Molotov in PHP
Artem Molotov
До первого запуска вроде как обязателен
Ну типа можно и без байт-кода, конечно, но менее производительно в большинстве случаев
источник

AM

Artem Molotov in PHP
Не могу найти инфу, но вроде ранее видел. В процах же тоже мини VM есть, да?
источник