PHP vs HHVM
In deze blog van Twisted Bytes laten we zien wat ons onder andere bezig houd op technisch vlak.
Deze keer gaat het over het performance verschil tussen PHP en HHVM.
We doen wat kleine synthetische test die de taal PHP zelf testen en niet hoe snel het in een CMS of applicatie is. Het gaat dus niet om de absolute snelheid maar het verschil tussen beide ( hoewel het altijd interessant is om te vergelijken, daarom is de broncode van de tests als download te downloaden ).
HHVM is een PHP engine die vooral door Facebook ontwikkeld wordt. Het project is al een paar jaar bezig, maar in het laatste jaar en vooral de laatste maanden is er grote vooruitgang. De meeste grote PHP frameworks werken nu op HHVM en wikipedia is voor een deel van hun servers overgeschakeld naar HHVM ( zie http://hhvm.com/blog/7205/wikipedia-on-hhvm ). Het is dus interessant om te zien hoe groot het verschil is.
HHVM heeft een aantal doelen waarvan snelheid een belangrijke is. HHVM slaagt hier extreem goed in. Zo erg zelfs dat het vaak niet gelooft wordt. Daarom gaan we het testen en laten zien hoe extreem de snelheid van HHVM kan zijn.
We testen met 3 tests. Deze tests zijn synthetisch maar geven een goede indicatie van het snelheidsvoordeel dat HHVM kan brengen.
-
Zend bench.php, deze hebben we aangepast omdat hij wat oud is en bepaalde tests niet goed werkten voor HHVM en PHP 5.6
-
phpbench, Ook hier hebben we wat tests aangepast en verwijderd omdat hij wat ouder is.
Als eerste testen we PHP 5.6.6, hier onder de behaalde resultaten.
test 1, php 5.6:
-------------------------------------- | PHP BENCHMARK SCRIPT | -------------------------------------- PHP version : 5.6.6 Platform : Linux -------------------------------------- test_math : 0.962 sec. test_stringmanipulation : 0.956 sec. test_loops : 0.638 sec. test_ifelse : 0.643 sec. -------------------------------------- Total time: : 3.199 sec.
test 2, php 5.6:
simple 0.127 simplecall 0.042 simpleucall 0.101 simpleudcall 0.098 mandel 0.195 mandel2 0.241 ackermann(7) 0.122 hash2(500) 0.025 heapsort(20000) 0.071 matrix(20) 0.074 nestedloop(12) 0.180 sieve(30) 0.076 strcat(200000) 0.009 ------------------------ Total 1.360
test 3, php 5.6:
Tests : 53 Iterations : 100000 Total time : 5.8697211742401 seconds Score : 170366 (higher is better)
Vervolgens draaien we dezelfde testen nogmaals op de server dezelfde server maar dan met HHVM met onderstaande resultaten.
test 1, HHVM 3.5:
-------------------------------------- | PHP BENCHMARK SCRIPT | -------------------------------------- PHP version : 5.6.99-hhvm Platform : Linux -------------------------------------- test_math : 0.318 sec. test_stringmanipulation : 0.551 sec. test_loops : 0.064 sec. test_ifelse : 0.089 sec. -------------------------------------- Total time: : 1.022 sec.
test 2, HHVM 3.5:
simple 0.008 simplecall 0.004 simpleucall 0.019 simpleudcall 0.018 mandel 0.017 mandel2 0.019 ackermann(7) 0.009 hash2(500) 0.014 heapsort(20000) 0.020 matrix(20) 0.013 nestedloop(12) 0.010 sieve(30) 0.011 strcat(200000) 0.004 ------------------------ Total 0.165
test 3, HHVM 3.5:
Tests : 53 Iterations : 100000 Total time : 1.0999410152435 seconds Score : 909140 (higher is better)
Als je beide resultaten naast elkaar legt dan is er duidelijk een verschil :
PHP 5.6.6 |
HHVM |
Verschil Tijd |
Verschil % |
|
test_math |
0,962 |
0,318 |
0,644 |
202,5 |
test_stringmanipulation |
0,956 |
0,551 |
0,405 |
73,5 |
test_loops |
0,638 |
0,064 |
0,574 |
896,9 |
test_ifelse |
0,643 |
0,089 |
0,554 |
622,5 |
test 2 |
1,360 |
0,165 |
1,195 |
724,2 |
test 3 |
5,870 |
1,100 |
4,770 |
433,6 |
En in een grafiek
Het is duidelijk dat HHVM 3.5 veel sneller is dan PHP 5.6. Er zit echter wel een nadeel aan. Niet alles werkt nog goed met HHVM, wij moesten de laatste 2 tests aanpassen om resultaten te krijgen. Deden we dat niet dan crashte HHVM. Dat klinkt eng, maar de resultaten zijn zo dat het de moeite waard is om ermee te testen.
Uiteraard is het interessanter om te zien wat de frameworks doen met HHVM. We hebben al wel getest met wat frameworks, maar daar gaan we in een volgend blog verder op in. We gaan dan Silverstripe testen. Als je graag een ander CMS of framework getest wil zien dan horen we dat graag.
De verwachting is dat PHP in de loop van 2016 met PHP7 gaat komen. Die versie belooft ook grote snelheidsverbeteringen. We zullen zien wat deze competitie gaat opleveren.
Wij kunnen HHVM al aanbieden. Dus als je ook van deze snelheid gebruik wil maken neem dan contact met ons op. Uiteraard willen we u graag helpen met het testen.