LocaHost.NET
Tools

Wydajność funkcji echo w PHP. Sposób optymalizacji - testy.


Nie ma programisty, który posługując się językiem PHP, nie używałby funkcji echo.
echo - Wypisz jeden lub więcej ciągów
void echo (string $ arg1 [, string $ ...])


W rzeczywistości echo nie jest funkcją (jest to konstrukcja wbudowana języka PHP), zatem podczas więc nie trzeba używać nawiasów. echo (w przeciwieństwie do innych konstrukcji językowych) nie zachowuje się jak funkcja, więc nie zawsze może być używane w kontekście funkcji. Dodatkowo, jeśli chcemy przekazać więcej niż jeden parametr do echa, parametry nie mogą być ujęte w nawiasy.

echo jest zatem proste i łatwe w obsłudze, z możliwością użycia na kilka różnych sposobów. Dzisiaj przetestujemy, który sposób użycia echo jest najbardziej wydajny. Chociaż mając na uwadze to, iż echo należy do składni języka - z góry można założyć, iż funkcja sama w sobie jest mocno zoptymalizowana.

Funkcja echo używana jest do wyświetlania (tekstu, zmiennych, wyników) na standardowe wyjście (konsola, strona www).
Sposoby użycia funkcji echo w języku PHP:

$zmienna = 'Zawartość mojej zmiennej w PHP';

# sposób nr. 1
echo $zmienna.' testowany tekst';

# sposób nr. 2
echo $zmienna." testowany tekst";

# sposób nr. 3
echo "$zmienna testowany tekst";

# sposób nr. 4
echo $zmienna; echo ' testowany tekst';

# sposób nr. 5
echo "${zmienna} testowany tekst";

# sposób nr. 6
echo 'Zawartość mojej zmiennej w PHP. testowany tekst';


Schemat testowania funkcji echo.
Funkcja echo została przetestowana z linii poleceń PHP. Poniżej przedstawiam kod testowania funkcji. Jest to nic innego jak iteracja (do 10 tys. razy) i wyświetlenie tekstu za pomocą kolejnych sposobów. Za każdy razem zostaje zmierzony czas wykonania całości iteracji. Dla pewności skrypt został uruchomiony 5 razy dla każdego sposobu.

Kod testowania funkcji echo:
<?php
function microtime_float() {
    list(
$usec, $sec) = explode(" ", microtime());
    return ((float)
$usec + (float)$sec);
}
$zmienna = 'Zawartosc mojej zmiennej w PHP.';

$czas1 = microtime_float();
for(
$i=0;$i<10000;$i++) {
    
# sposob nr. x
}
$czas2 = microtime_float();
echo
round($czas2-$czas1,6);
?>


Wyniki testowania funkcji echo:
Test nr. 1: 1:3,201627  2:3,195476  3:3,196249  4:4,085179  5:3,169852  6:3,293718
Test nr. 2: 1:3,130458  2:3,263948  3:3,207585  4:3,835533  5:3,168425  6:3,262281
Test nr. 3: 1:3,075266  2:3,164228  3:3,128738  4:4,173969  5:3,113928  6:3,267293
Test nr. 4: 1:3,121783  2:3,331647  3:3,373735  4:3,921561  5:3,273135  6:3,319214
Test nr. 5: 1:3,874715  2:3,355851  3:3,469895  4:4,061483  5:3,284346  6:3,259792
Średnia:    1:3,280769  2:3,262230  3:3,275240  4:4,015545  5:3,201937  6:3,280459


Wnioski:
Każdy sposób wywołania funkcji doprowadzi nas do tego samego wyniku (zostanie wyświetlony ciąg znaków), jednakże wywołania nie są w pełni równoważne. Jak widać na zamieszczonej tabelce, wyniki wszystkich wywołań różnią się od siebie w bardzo niewielkim stopniu. Należy zauważyć, iż podany wynik dotyczy 10 tys. wywołań funkcji echo dla każdego sposobu. Zaoszczędzone kilka milisekund przy tylu wywołaniach to tak naprawdę niewielka optymalizacja.
Zatem podstawowy wniosek jest taki, iż nie należy się zbytnio przejmować sposobem użycia funkcji echo w kodzie PHP. Różnica w różnych wywołaniach funkcji jest niewielka, jednakże proszę zwrócić uwagę na sposób podwójnego użycia funkcji echo (kolumna nr. 4), z którego można wywnioskować, iż każde wywołanie funkcji echo kosztuje nas cenne milisekundy.
Zatem o ile sposób wywołania funkcji jest nieistotny, należy zadbać aby wywołań funkcji echo było jak najmniej!
Dodatkowo możemy wyłonić zwycięzcę (kolumna nr. 5): najszybsze wywołanie echo jest w formie: echo "${zmienna} testowany tekst"; - czyli zmienna ujęta w nawiasy klamrowe.

Powyższy test został oparty na tekście w formacie ASCII (jak widać). Jednakże test na tekście w formacie UTF-8 oraz ISO-8852-2 (Latin 2), daje takie podobne wyniki jak dla tekstu ASCII.


Artykuł utworzony: 2020-03-08 02:01:01: PHP, Optymalizacja, wydajność funkcji echo w php, optymalizacja funkcji echo, optymalizacja funkcji php, funkcja echo php, użycie funkcji echo, podstawienie pod zmienną, optymalizacja kodu PHP, microtime_float, sposób wywołania funkcji echo.

» Regulamin

» Kontakt

MySQLPHPPhpMyAdminlocalhost127.0.0.1 © LocaHost.NET