Did You Know? PHP Optimizes These Function Calls for You!

Did You Know? PHP Optimizes These Function Calls for You!

Ich habe gehofft, dass diese #nextcloud Warnung mit dem Update auf die neue Plattform verschwinden. Kann man daran was tun?
You’ve probably seen `use function strlen` in PHP and shrugged.
But here’s the twist: in certain cases, it activates a special compiler optimization in PHP that makes some functions significantly faster.
This is your eureka moment! Here’s how it works, when it matters, and how to adopt it easily: https://tideways.com/profiler/blog/compiler-optimized-php-functions?utm_medium=social&utm_source=mastodon&utm_campaign=compiler-optimized-php-functions
#php #opcache #compileroptimization #phptips #webdev #coding #programming #performance
Thinking about turning on OPcache Preloading in your PHP app?
It sounds like an easy win—but unless your app is already lightning fast, you might not see much benefit.
In our latest post, we dig into:
- What preloading actually does
- When it’s useful (and when it’s not)
- Real-world gains with hard numbers
#PHP #OPcache #Performance #WebDev #Backend #DevTips #Tideways
To double quote or not, that's the question!
🔍 #PHP string interpolation occurs at compile-time, not runtime
🏎️ #SingleQuotes vs #DoubleQuotes debate: negligible performance difference
💻 #OPcache is crucial for optimizing PHP performance
🔧 #Lexer handles string interpolation during tokenization
🧠 #AST and opcode generation treat single and double quotes similarly
📊 #StringConcatenation options: interpolation, comma separation, or dot operator
Key takeaway: Use the latest #PHP version, enable #OPcache, and choose quotes based on readability, not micro-optimizations.
https://dev.to/realflowcontrol/too-double-quote-or-not-thats-the-question-78l
Схематично, простыми словами о внутреннем устройстве PHP (Zend Engine, OPCache, JIT)
Данный пост нацелен на неопытных PHP-специалистов. От этой информации лучше программировать вы не станете. Ожидаемая польза: Мне когнитивно и морально легче, когда уменьшается «магия» с тем с чем работаешь. Может тебе тоже Возможно чуть-чуть реже статьи на хабре будут тебя отпугивать Объясню на 4 примерах — каждый лишь немного сложнее предыдущего. Пример 1: запуск программы, написанном на компилируемом языке (Go): в полной статье Пример 2: Запуск скрипта PHP без OPCache и JIT В интерпретируемых языках подразумевается, что выполнение программы будет осуществляться не сразу машинного кода. В случае PHP — запускается именно исходной код. Это означает, что каждый запуск программы система должна проанализировать исходный код и преобразовать его в понятный код для процессора (т.е. в машинный код). Вот схематично представил всю последовательность работы PHP скрипта без включенных OPCache и JIT (каждый из них по отдельности рассмотрим в следующих двух примерах).ache** и JIT (каждый из них по отдельности рассмотрим в следующих двух примерах). У нас привычный «исходный код» PHP (файл hello-world.php ): <?php echo "Hello world"; Опять идем по порядку, рассмотрим какие процессы происходят запустив команду: php hello-world.php Процесс №1 — Компиляция в байт-код Сначала исходный код обрабатывается Zend Compiler — это PHP компилятор . Первый из двух основных компонентов Zend Virtual Machine . В отличие от рассмотренного выше компилятора Go: задача PHP компилятора — преобразовать исходный код не в машинный код, а в код-посредник - байт-код ; процесс компиляции происходит при каждом запуске программы (вместо лишь единоразового - до запуска программы, как в примере с Go) В случае PHP этот байт-код назвали PHP OPCode . Байт-код — более низкоуровненный чем исходный код, содержащий набор команд для интерпретатора (об интерпретаторе в следующем пункте). Байт-код не может выполняться процессором напрямую. Чтобы посмотреть результат работы компилятора — сам байт-код — выполним команду: php -d opcache.opt_debug_level=0x20000 -d opcache.enable_cli=1 hello-world.php Получим: $_main: ; (lines=3, args=0, vars=0, tmps=1) ; (after optimizer) ; /hello-world.php:1-2 0000 EXT_STMT 0001 ECHO string("Hello World") 0002 RETURN int(1) Вначале видим $_main: — обозначает, что следующие строки относятся к функции main . Появление такой функции в байт-коде для глобальной области видимости PHP — занятная историческая особенность, дошедшая из других языков; Следующие 3 строки начинаются на ; — так обозначаются комментарии. Одна из целей — для дебаг-информации; Последние 3 строки — непосредственно код нашего приложения, который будет выполняться виртуальной машиной в следующем шаге. Процесс №2 — Выполнение байт-кода
https://habr.com/ru/articles/844768/
#PHP #zend_engine #opcache #jit #интепретатор #компилятор #байткод #машинный_код
Wochenrückblick, Ausgabe 39 (2024-18).
Diesmal mit
- 🗺️ der Bikerouter Hall of Fame _aller_ Supporterinnen bisher ❤️
- 🚵♂️ neuen Reifen für das Crosser-Gravel-Dings und der ersten Ausfahrt damit – unter Anderem zu Deutschlands größter (!) Wüste (!!)
- 💻 den Erkenntnissen von @atomicpoet zur Ergonomie beim Arbeiten mit dem Notebook vs. Desktop-Computer und wie sich das mit meinen Erfahrungen deckt
- 🤖 ollama, welches die Möglichkeit bietet, LLMs bequem auf dem eigenen Rechner laufen zu lassen
- 🐘 cachetool, einem Werkzeug zum Verwalten des PHP opcache
- 🍎 dem Blick in mein macOS-Applications-Directory: diesmal gibt's den Blick auf alle Apps, die mit „F“ beginnen
- 🛠️ noch mal Deployment des Blogs, das läuft jetzt tatsächlich mit einem simplen `post-merge` Hook in Git
- 🔊 und wie immer Techno
#BikeRouter #Gravel #CycloCross #Spreewald #DahmeSpreewald #Wüste #Ergonomie #Notebook #Desktop #ollama #cachetool #PHP #opcache #macOS #Git #Techno