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:

  1. Nieefektywna funkcja: Zdefiniujmy funkcję, która wykonuje wiele powtórzeń obliczeń wewnątrz pętli.
  2. 
    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.

  3. Optymalizacja: Przenieśmy obliczenia niezależne od pętli wewnętrznej poza nią.
  4. 
    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).

  5. Dodatkowe optymalizacje: Można użyć funkcji wbudowanych w PHP, które są zoptymalizowane pod kątem wydajności, np. `array_sum()`.
  6. 
    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!

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *