Optymalizacja kodu PHP
W tym krótkim artykule pozwolę sobie wziąć na tapetę pisanie optymalnego kodu w dość popularnym języku tworzenia stron WWW. Proste kroki pozwolą, aby strona generowana była znacznie szybciej niż dotychczas. Omówione zostanie to w punktach według poprawy wydajności w przeprowadzonych testach. Zatem:
Pętle zamiast:
for($i=0;$i<count($array);$i++){}
Używaj:
$end_i = count($array);
for($i=0;$i<$end_i;$i++){}
Optymalizacja samego kodu odpowiedzialnego za pętle może przynieść wymierne korzyści, zwłaszcza przy dużych tablicach, a tyczy się przeprowadzenia kalkulacji długości trwania pętli poza nią. Drugi warunek pętli sprawdzany jest przy każdej iteracji wraz z wykonaniem kodu odpowiedzialnego za zliczanie elementów występującym w tablicy. Oczywistym jest, że zliczanie można przeprowadzić raz i wykorzystać wynik w każdej iteracji, o ile kod w ciele pętli nie zmieni zawartości tablicy. Rożnica przy 1000 elementach może wynieść nawet +2090%.
Najlepszy sposób po iterowaniu po tablicy asocjacyjnej
Przyjrzyjmy się linijką poniżej:
foreach($aHash as $val) $val = $val . "a"; foreach($aHash as $key=>$val) $key = $val . "a"; while(list($key) = each($aHash)) $aHash[$key] .= "a" ;
a poniższym:
$key = array_keys($aHash); $size = sizeOf($key); for ($i=0; $i<$size; $i++) $aHash[$key[$i]] = $aHash[$key[$i]]. "a";
Pierwsze listingi są wolniejsze od drugiego do 10 razy - jako programista żałuje ponieważ prezentują się on znacznie lepiej.
Magia podwójnego cudzysłowowa
Podwójny cudzysłów pozwala na łatwe umieszczanie treści w wypisywanym ciągu jednakże, jeśli przyjrzymy się
$tmp[] = 'aa $ aaaa $ aaaa $ a'; $tmp[] = "aa $ aaaa $ aaaa $ a";
Pierwsza linijka wykona się do 6 razy szybciej niż druga, dopiero po dodaniu ukośników przebieg obu linijek jest zbliżony. Po za przypadkiem pojedynczego $ nie ma różnic pomiędzy obiema metodami.
.. ciąg dalszy nastąpi
