HHVM vs PHP 7
A year ago PHP7 launched. Those already using HHVM ran a bunch of benchmarks and came away with the conclusion that HHVM is much faster and is indeed the secret sauce of their superior pricey hosting. While scouting for hosting for a very high traffic site, I heard this from WPE, from Pressidium and from Kinsta. Out of the three principal advocates of HHVM, Kinsta’s offer was the only one which made any kind of financial sense.
Since then, we’ve been using HHVM for that project with no end of grief in surprise collapses in the middle of the night or the middle of the weekend. Are the instability and incompatibilities worth it? For a smaller web publisher, certainly not. For a middle-sized web publisher (think top 2000 website in the US), probably not. For a very large sized web publisher (think Facebook or another top 100 website in the US) quite possibly. Here’s why.
While the technologies are competitive now in December 2016, PHP7 will just get faster. It’s much younger technology (not PHP itself but v7 with an intial 2016 release vs HHVM with 2013 release). HHVM will probably not mature for WordPress as WordPress weblogs and the general web are not its target clientele but rather Facebook itself and other huge roll your own CMS publishers.
Let’s compare development activity with the issue trackers. It’s not easy as HHVM is using GitHub and PHP is its own tracker. But let’s try.
- HHVM has 603 open issues with 4365 closed issues.
- PHP7 has 405 open issues with 741 closed issues
Facebook’s HHVM GitHub issue tracker
PHP bug tracker
The HHVM/PHP compatibility problems will not go away. There are 247 open issues. HHVM is designed for Facebook and its core development team is funded by Facebook. Working with PHP CMS’s is basically a hack on top of Facebook’s code.
PHP supports developers and working with PHP applications is PHP’s core mission. Here’s a very good article making the case for both sides.
In terms of pure performance, PHP 7 surpasses HHVM in these very serious tests. Note: I was shocked at how badly WordPress does next to Drupal on the same server: 40 req/s vs 230 req/s for Drupal.
WordPress is an open source CMS fundamentally built by a radically motivated free software core (Matt Mullenweg and his VC funded band of brigands at Automattic are trying to hijack it as private software, but so far to limited success: they would lose too much of the community). PHP is WordPress.org’s long term partner – indeed PHP runs its core benchmarks against WordPress. Most WordPress core developers neither like nor trust Facebook (or Google or Microsoft). So huge resources will go into making WordPress work well with PHP7 and limited resources will go into making HHVM work well with WordPress.
Those who prefer HHVM are often the type of people who don’t like to share. For instance, this French team who advocate HHVM and have written code to speed WordPress up on HHVM write:
In short, we don’t know if we are going to share something, what will be this something, how we will share it and when…
I.e. NXTWEB have written an HHVM extension which really improves WordPress performance under HHVM but won’t share it and will only use it to promote their hosting business. HHVM is based on selfishness and non-sharing. PHP7 is based on a common resource that we are all trying to improve.
NXTWEB hoards their WordPress extension for HHVM
If you’d like to help make a better world and share that world with others in a spirit of generosity, PHP7 is the clear choice. In both human and in software development, over time generosity usually wins.
Alec Kinnear
Alec has been helping businesses succeed online since 2000. Alec is an SEM expert with a background in advertising, as a former Head of Television for Grey Moscow and Senior Television Producer for Bates, Saatchi and Saatchi Russia.
Even I had the same problem. HHVM takes up a lot of memory and when ever the site used to get about 5-10 concurrent users, HHVM used to crash. Tried a lot of things to solve the issue, but finally cleaned the whole server and installed everything from scratch again, which removed the issue.