Funkcje a wydajność kodu
Założenie: Pokażemy, jak proste błędy w definicji funkcji mogą wpływać na jej wydajność i jak je unikać.
Krok po kroku:
- Nieefektywna funkcja: Zdefiniujmy funkcję, która wykonuje wiele powtórzeń obliczeń wewnątrz pętli.
- Optymalizacja: Przenieśmy obliczenia niezależne od pętli wewnętrznej poza nią.
- Dodatkowe optymalizacje: Można użyć funkcji wbudowanych w PHP, które są zoptymalizowane pod kątem wydajności, np. `array_sum()`.
function slowFunction($n) {
$result = 0;
for ($i = 0; $i < $n; $i++) {
for ($j = 0; $j < $n; $j++) {
$result += $i * $j;
}
}
return $result;
}
Ta funkcja ma złożoność obliczeniową O(n^2), co oznacza, że czas jej wykonania rośnie kwadratowo wraz ze wzrostem wartości `$n`. Dla dużych `$n` będzie bardzo wolna.
function fastFunction($n) {
$result = 0;
for ($i = 0; $i < $n; $i++) {
$innerResult = 0;
for ($j = 0; $j < $n; $j++) {
$innerResult += $j;
}
$result += $i * $innerResult;
}
return $result;
}
W tej wersji obliczenie sumy `$j` jest wykonywane tylko raz dla każdego `$i`, co znacznie poprawia wydajność. Złożoność spada do O(n).
function evenFasterFunction($n) {
$result = 0;
for ($i = 0; $i < $n; $i++) {
$result += $i * array_sum(range(0, $n - 1));
}
return $result;
}
Użycie `array_sum()` i `range()` może dodatkowo przyspieszyć obliczenia, choć różnica może być niewielka w porównaniu do poprzedniej optymalizacji.
Ten przykład pokazuje, jak proste zmiany w kodzie funkcji mogą znacząco wpłynąć na jej wydajność. Zachęcamy do dalszego zgłębiania tematu optymalizacji kodu w PHP!