Czy PHP 7.4 jest szybsze od 7.3?

Język PHP nieustannie jest rozwijany przez twórców oraz ciągle wydawane są nowe wersje. W dniu 28 listopada 2019 została wydana stabilna wersja PHP 7.4, która niesie ze sobą nowe funkcje, usprawnienia oraz poprawę wydajności.

Co nowego w PHP 7.4?

Jakie zmiany możemy zaobserwować w nowej wersji PHP względem poprzednich?

Wstępne ładowanie (ang. preloading) – dzięki korzystaniu z PHP oraz OPcache, który jest domyślnie zainstalowany na naszych serwerach można uzyskać większą wydajność. Kod aplikacji jest najpierw kompilowany, a następnie zapisywany w pamięci. Pozwala to wykorzystać dane, które zostały umieszczone w przestrzeni pamięci i uniknąć ponownej kompilacji kodu

Funkcje strzałkowe (ang. arrow functions) – w najnowszej wersji PHP wprowadzono również funkcje strzałkowe, dzięki czemu możemy zmniejszyć ilość kodu i zwiększyć czytelność kodu

Kod dla PHP 7.3 i starszych wersji:

array_map(function (User $user) { 
    return $user->id; 
}, $users)

Ten sam kod zapisany za pomocą nowych funkcji strzałkowych wykorzystywanych w PHP 7.4:

array_map(fn (User $user) => $user->id, $users)

Operator spread – PHP 7.4 wprowadza również możliwość korzystania z operatora rozkładania (ang. spread operator), dzięki czemu możemy zwiększyć wydajność naszej aplikacji.

Przykład wykorzystania operatora spread:

$serwer= ['litespeed', 'redis', 'mariadb', 'php'];
$hosting= ['domeny', 'administracja', ...$serwer, 'wsparcie'];

Wydajność PHP 7.4

Aby sprawdzić jak wygląda wydajność PHP 7.4 oraz różnica w czasie ładowania stron internetowych opartych na tej wersji oraz na poprzedniej 7.3 przeprowadziliśmy testy . W tym celu wykorzystaliśmy trzy różne skrypty. Każdy z nich wykonywany był dziesięć razy, a następnie wyciągnęliśmy z wyników średnią, którą zamieściliśmy w poniższej tabeli:

bench.php micro_bench.php php_benchmark.php Łączny czas
PHP 7.3 0.322 s 1.925 s 0.727 s 2.974 s
PHP 7.4 0.255 s 1.696 s 0.661 s 2.612 s
Różnica czasu (im mniej tym lepiej)0.067 s0.229 s0.066 s0.362 s
Procent przyśpieszenia PHP 7.4 w stosunku do PHP 7.326%13%9%14%

Różnicę między poszczególnymi testami doskonale widać na poniższych wykresach:

Ponownie widać, że najnowsza wersja PHP 7.4 jest szybsza od poprzedniej. Jak wygląda sytuacja względem wersji 7.3, a jeszcze starszymi (w większości już niewspieranymi) wersjami PHP? Rok temu opublikowaliśmy wyniki na naszym blogu na stronie: Wdrażamy PHP 7.3 i porównujemy je z innymi wersjami

Parę słów na temat wykorzystanych skryptów:

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

php_benchmark.php

Głównym zadaniem tego skryptu jest wykonywanie standardowych operacji na PHP oraz opcjonalnie na bazie danych, z których korzystają WordPress, Joomla, PrestaShop czy inne CMSy:

– obliczanie działań matematycznych,
– działania na ciągach znaków,
– wywołanie pętli,
– działania na instrukcjach warunkowych if else.

Źródło: https://github.com/vanilla-php/benchmark-php/blob/master/benchmark.php

Zachęcamy do samodzielnego przeprowadzenia testów wydajnościowych oraz sprawdzenia nowych funkcji PHP 7.4 na hostingu Litespeed Każde z naszych pakietów posiada domyślnie ustawioną najnowszą wersję jakim jest PHP 7.4

Michał

Dodaj komentarz