PHP vs HHVM

Auteur Twisted Bytes op 9 Maart 2015

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.

  1. bench.php

  2. Zend bench.php, deze hebben we aangepast omdat hij wat oud is en bepaalde tests niet goed werkten voor HHVM en PHP 5.6

  3. 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

hhvm php

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.

Tags: , ,