After the PHP 5.6.0 release yesterday I ran some tests of PHP 5.6.0, PHP 5.5.16, and PHP 5.4.32. In that test -- which was using a built-in test of the PHP-based Phoronix Test Suite -- I found the speed of code execution for these common hot paths hadn't changed much from PHP 5.5 to PHP 5.6.
This morning I decided to fire up the latest HHVM (HipHop Virtual Machine) code (v5.6.99-hhvm) to see how its performance compares to PHP 5.6.0 with the Phoronix Test Suite code-paths. The phoronix-test-suite debug-self-test output on PHP 5.6 from yesterday was:
### OVERALL DATA ### PHP: 5.6.0 DETAILED_SYSTEM_INFO: 0.065 seconds LIST_AVAILABLE_TESTS: 0.342 seconds LIST_AVAILABLE_SUITES: 16.346 seconds INFO: 0.016 seconds CLONE_OPENBENCHMARKING_RESULT: 61.829 seconds RESULT_FILE_TO_TEXT: 8.552 seconds DIAGNOSTICS: 0.012 seconds DUMP_POSSIBLE_OPTIONS: 0.010 seconds ELAPSED TIME: 261.519 seconds PEAK MEMORY USAGE: 38.25 MB PEAK MEMORY USAGE (emalloc): 33.915 MB
When running the latest HHVM on the same system with Ubuntu 14.04 LTS:
### OVERALL DATA ### PHP: 5.6.99-hhvm DETAILED_SYSTEM_INFO: 0.221 seconds LIST_AVAILABLE_TESTS: 0.314 seconds LIST_AVAILABLE_SUITES: 14.427 seconds INFO: 0.044 seconds CLONE_OPENBENCHMARKING_RESULT: 64.520 seconds RESULT_FILE_TO_TEXT: 9.320 seconds DIAGNOSTICS: 0.048 seconds DUMP_POSSIBLE_OPTIONS: 0.026 seconds ELAPSED TIME: 266.769 seconds PEAK MEMORY USAGE: 556.339 MB PEAK MEMORY USAGE (emalloc): 78 MB
HHVM is now coming in just behind PHP 5.6 for this particular test. The peak memory usage is also shocking for HHVM but I don't know if their implementation of memory_get_peak_usage() is just radically different from PHP, etc.
Those wanting to learn more about Facebook's HHVM PHP implementation can visit HHVM.com.