JIT for PHP project
| From: | Dmitry Stogov | Date: | Thu, 01 Sep 2016 11:57:24 +0000 |
| Subject: | JIT for PHP project | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-95531@lists.php.net to get a copy of this message | ||
Hi @internals,
I'm glad to say that we have started a new JIT for PHP project and hope to deliver some useful
results for the next PHP version (probably 8.0).
We are very early in the process and for now there isn't any real performance improvement yet.
So far we spent just 2 weeks mainly working on JIT infrastructure for x86/x86_64 Linux (machine code
generation, disassembling, debugging, profiling, etc), and we especially made the JIT code-generator
as minimal and simple as possible. The current state, is going to be used as a starting point for
research of different JIT approaches and their usability for PHP.
The code is available at: https://github.com/zendtech/php-src/tree/jit-dynasm/ext/opcache/jit
The sources may be built and tested as regular PHP (no any special external dependencies required).
JIT itself is implemented as a part of Opcache.
You may try it in action:
sapi/cli/php -d opcache.jit_buffer_size=32M Zend/bench.php
sapi/cli/php -d opcache.jit_buffer_size=32M -d opcache.jit_debug=1 Zend/bench.php 2>&1 | less
As I mentioned we didn't try to achieve any real performance improvement yet, although we do
currently see 20% speedup on bench.php, but a bit of a slowdown on real-life apps.
Wish us luck :)
Thanks. Dmitry.