Wdrażamy PHP 7.3 i porównujemy je z innymi wersjami

Od dziś na naszych serwerach funkcjonuje najnowsza wersja PHP 7.3. Niesie ona za sobą wiele zmian, nowych funkcji oraz usprawnień – jednym z tych ostatnich jest wzrost szybkości przetwarzania skryptów w porównaniu do poprzednich wersji. Wszystkie nowości związane z PHP 7.3 można znaleźć we wpisie „Co nowego w PHP 7.3?”, a tymczasem przechodzimy do testów 😉

W celu porównania ostatnich wersji PHP utworzyliśmy konto w pakiecie premium-ssd-www (polecanym między innymi dla sklepów internetowych) na zwykłym serwerze, na którym są zakładane konta Klientów – aktualnie jest to maszyna s21 – jest to dość istotna informacja ze względu na to, że większość testów, z którymi do tej pory się spotkaliśmy była przeprowadzana w warunkach „laboratoryjnych”, czyli na stronach utworzonych specjalnie pod testowanie PHP. My z kolei przeanalizowaliśmy działanie skryptów z punktu widzenia normalnego użytkownika, aby wyniki były bardziej wiarygodne. Każdy z testowanych skryptów testowaliśmy dziesięciokrotnie, a następnie wyciągnęliśmy średnią z wyników.

 PHP 5.6PHP 7.0PHP 7.1PHP 7.2PHP 7.3
bench.php2.680 s1.038 s0.749 s0.499 s0.385 s
wzrost szybkości względem poprzedniej wersji158%39%50%29%
wzrost szybkości względem PHP 5.6158%258%437%596%
 PHP 5.6PHP 7.0PHP 7.1PHP 7.2PHP 7.3
micro_bench.php12.632 s4.241 s3.569 s2.845 s2.454 s
wzrost szybkości względem poprzedniej wersji198%18%25%15%
wzrost szybkości względem PHP 5.6198%253%344%415%

Im krótszy czas tym lepiej. 🙂

Parę słów o użytych skryptach:

bench.php
skrypt ten głównie wykonuje zadania w pętlach, poza prostymi funkcjami (które w pętli wykonują inkrementację wartości zmiennej, obliczają długość ciągu lub wywołują pustą funkcję) wykonuje też m.in. następujące zadania:
– oblicza zbiór Mandelbrota,
– funkcję Ackermanna,
– oblicza ciąg fibonacciego,
– sortuje stos,
– tworzy tablicę wielowymiarową

Źródło: https://github.com/php/php-src/blob/master/Zend/bench.php

micro_bench.php
ten skrypt również opiera się na pętlach i wykonuje m.in. następujące zadania:
– wywołuje w pętli funkcję,
– odczytuje wartość właściwości obiektu,
– zapisuje wartość w właściwości obiektu,
– sprawdza czy do właściwości obiektu jest przypisana wartość,
– sprawdza czy wartość właściwości obiektu nie jest pusta,
– wywołuje metodę obiektu,
– odczytuje wartość właściwości statycznej obiektu,
– zapisuje wartość w właściwości statycznej obiektu,
– sprawdza czy do właściwości statycznej obiektu jest przypisana wartość,
– sprawdza czy wartość właściwości statycznej obiektu nie jest pusta,
– wywołuje metodę statyczną obiektu

Źródło: https://github.com/php/php-src/blob/master/Zend/micro_bench.php

Jak widać skrypty z wersji na wersję wykonują się coraz szybciej.

Powyższe testy zostały przeprowadzone według benchmarku PHP Performance Comparison 2018 and 2017 stworzonego przez Christiana Vigha.

Zachęcamy do samodzielnego przeprowadzenia testów wydajnościowych PHP 7.3 na hostingu SSD
– wystarczy wybrać dowolny z pakietów hostingowych, bo każde z kont hostingowych ma w standardzie PHP 7.3.

Michał

Dodaj komentarz