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

Funkcja echo w PHP – nie ma kogoś, kto posługując się językiem PHP, nie używałby tej funkcji. Funkcja prosta i łatwa w obsłudze, z możliwością użycia na kilka różnych sposobów. Echo to tak naprawdę składnia języka PHP (ale, jak zwał tak zwał ;-). Dzisiaj przetestujemy, który sposób użycia funkcji 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:
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 tekscie w formacie ASCII (jak widać). Jednakże test na tekscie w formacie UTF-8 oraz ISO-8852-2 (latin 2), daje takie podobne wyniki jak dla tekstu ASCII.

This entry was posted in Optymalizacja, PHP and tagged , , , , , , , . Bookmark the permalink.

2 Responses to Wydajność funkcji echo w PHP. Sposób optymalizacji – testy.

  1. ChirmEmbami says:

    Everybody pulls for David, nobody roots for Goliath.

  2. PammaTeah says:

    An employee’s motivation is a direct result of the sum of interactions with his or her manager.

Leave a Reply