Przygotowanie
Do dzisiejszego porównania wykorzystamy PHP w wersji 8.2 oraz NodeJS w wersji 18.14.0 LTS. Użyjemy również Docker, aby ułatwić sobie konfigurowanie środowisk. Oczywiście wszystko starałem się trzymać w najbardziej defaultowej wersji jak tylko mogłem, więc nie uświadczymy tutaj żadnych dodatkowych konfiguracji, które mogłyby „podboostować” którąkolwiek technologię.
Dzięki lekcji, którą wyciągnąłem podczas tworzenia poprzedniego porównania, dowiedziałem się, że testy muszą być jeszcze prostsze i bardziej uniwersalne i oto doszedłem do wniosku, że najlepiej będzie zainicjować następujące sprawdziany:
- Obliczenie 20! czyli silnię z 20. Oczywiście rekurencją, aby było dodatkowe obciążenie.
- Znaleźć największą liczbę z przedziału 1-100000 – generowanie tablicy oczywiście poza mierzeniem czasu.
- Wygenerowanie losowego ciągu znaku o długości 100000 znaków i przekształcenie wszystkich liter na wielkie litery.
Zadania może nie są aż nadto trudne, ale są wystarczające, aby ukazać konkretne czasy wykonania. Ważne też jest przy każdym teście, aby wyniki były po prostu przyzwoite – to nam powie czy daną technologię w ogóle brać za poważny wybór.
Tworzenie kodu
Na szczęście nie musiałem spędzić wielu godzin nad tym wszystkim, a i samo wyszukanie potrzebnych informacji dla obu narzędzi było bardzo przyjemne i bardzo proste. Powiem, że na tym polu mamy ładny remis. Co ciekawe, najwięcej problemów miałem z Dockerem. To nie tak, że to było uwłaczające i mega trudne, po prostu zapomniałem jak go się nastawia 😅. Także mogę powiedzieć, że taki minimalny problem był z Dockerem, no ale to nie o nim miałem pisać 😉
Wyniki
Muszę uprzedzić, że wyniki są nawet ciekawe. Żadna z technologii nie jest słaba i stanowią nadal dla siebie konkurencję. Jak dla mnie oba narzędzia dały sobie świetne radę. Liczby mówią same za siebie:
Test | PHP | Node.js |
---|---|---|
Silnia 20! | 0.000011921 s | 0.000029604 s |
Największa liczba | 0.001819134 s | 0.002862400 s |
Generowanie ciąg znaków | 0.001703978 s | 0.002624891 s |
Średnia czasów: | 0,001178344 s | 0,001838965 s |
Podsumowanie
Wyniki są bliskie siebie i wydawać się może że PHP jest 2x razy szybszy od Node.js, ale czy tak jest przy większych projektach? Nie wiem, bo te testy tego nie ukazują. To co wiem, to oba narzędzia są jednak wydajne i tylko różnice technologiczne powinny decydować o tym, które narzędzie wybierzemy 🙂
Wszystkie testy oraz konfiguracja Docker dostępne są na GitHub
Cytat „Dzisiaj na warsztat weżniemy„. Propozycja podmiany wyrazu „weźniemy” na „weźmiemy”, wtedy będzie całkiem dobrze 😉
Dzięki za czujne oko 😀