Porównanie prędkości PHP od 5.2 do 8.0

Test szybkości PHP 5.2 do PHP 8.0

26 listopada pojawiła się nowa wersja PHP 8.0.0. To bardzo duża zmiana, nie tylko w numerowaniu, ale i pod względem „wnętrzności” oraz możliwości języka. Niektórzy powiedzieliby, że PHP z każdym dużym wydaniem coraz bardziej przypomina język programowania i coś w tym jest, choć ja przestałem tak bardzo narzekać już od wersji 7.0. A wersja 7.4 była prawie idealna. Czy wszystkie te „prawie” wygładzi wersja 8.0? Prawie 🙂 W każdym razie, na pewno język się mocno rozwija i jest coraz lepszy, ale o nowościach w PHP 8 napisano już sporo artykułów. Ja wziąłem na warsztat prędkość nowego wydania i postanowiłem ją porównać z poprzednimi.

Środowisko testowe

Zanim przejdziemy do samych testów, przedstawię środowisko testowe. Niestety, nie mogłem przeznaczyć do tego dedykowanego komputera, jednak mój codzienny laptop, w weekend, zmienił się w taką maszynę. Wyłączyłem wszystkie procesy, które byłem w stanie wyłączyć, odłączyłem komputer od internetu, starałem się go maksymalnie izolować od potencjalnych źródeł zakłóceń. Laptop ma:

Procesor Pamięć RAM Dysk System
Intel Core i7 2670QM 32GB DDR3 800MHz Plextor 512GB 2,5″ SATA SSD M8VC Windows 10 Home

Przetestowałem następujące wersje PHP:

Wersja PHP Wersja Zend Engine Data kompilacji
5.2.17 2.2.0 06.01.2011, 17:28:41
5.3.29 2.3.0 15.08.2014, 19:17:16
5.4.45 2.4.0 02.09.2015, 23:48:30
5.5.38 2.5.0 20.07.2016, 11:16:03
5.6.40 2.6.0 09.01.2019, 15:10:36
7.0.33 3.0.0 05.12.2018, 21:22:29
7.1.33 3.1.0 23.10.2019, 09:24:14
7.2.34 3.2.0 01.10.2020, 10:24:14
7.3.25 3.3.25 24.11.2020, 13:41:33
7.4.13 3.4.0 24.11.2020, 12:43:32
8.0.0 4.0.0-dev 24.11.2020, 22:02:57

Co się nasuwa, jako pierwsze? Oczywiście pomijając to, jak starego laptopa używam… Wraz z wersją 8 skompilowano Zend w wersji developerskiej. Nie wiem, czy ma to wpływ na wydajność, czy nie. Druga rzecz, to bardzo wczesna wersja 8. Pierwsza, podczas gdy wersja 5.4 to nawet czterdziesta – (wliczając 0 jako pierwszą) – szósta kompilacja. To też może mieć jakiś wpływ. Zobaczymy.

Co tak właściwie testowałem?

Przygotowałem dziewiętnaście testów, od najprostszych po nieco bardziej skomplikowane. Każdy test wykonałem tysiąc razy, w dwustu iteracjach, co oznacza, że każdy kod był wykonany dwieście tysięcy razy. Czyli niecałe cztery miliony testów, aby uzyskać jak najbardziej uśrednione wyniki. Potem odrzuciłem wyniki skrajne, które – szczególnie ze względu na to, że to jednak roboczy laptop, mogły zaburzyć wynik. I rzeczywiście, policzyłem standardową dewiację dla pełnych wyników i dla tych, dla których odrzuciłem skrajne wartości, poprawa była zauważalna, często nawet spadała trzykrotnie.

Lista testów