Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak badac wydajnosc (obciazenie) danej funkcji
Forum PHP.pl > Forum > Przedszkole
mihauu
Problem:

Zazwyczaj jest wiele sposobów na wykonanie jednej rzeczy.
Skąd mam wiedzieć , czy wybrana metoda jest najbardziej optymalna?

Może na przykładzie jaki mnie męczy :

Piszę serwis na takim moim ubogim pseudo szablonie. Mam plik .tpl który przeszukuje sobie funkcja str_replace, a nastepnie echuje calość.

Co jest lepsze :

  1. <?php
  2. $pokaz_glwona = str_replace('{form}',"<form name="dodaj_strone" method="POST" action="dodaj_wpis_p.php" enctype="multipart/form-data">",$pokaz_glwona );
  3. $pokaz_glwona = str_replace('{anchor}',"<INPUT type="text" name="anchor" size="25" maxlength="100"/>" ,$pokaz_glwona );
  4. $pokaz_glwona = str_replace('{url}',"<INPUT type="text" name="url" size="25" maxlength="100"/>" ,$pokaz_glwona );
  5. $pokaz_glwona = str_replace('{mail}',"<INPUT type="text" name="mail" size="25" maxlength="100" onBlur="SprawdzMaila(this)" />" ,$pokaz_glwona );
  6. $pokaz_glwona = str_replace('{opis}',"<TEXTAREA name="opis" rows="10" cols="35"></TEXTAREA>" ,$pokaz_glwona );
  7. $pokaz_glwona = str_replace('{zdjecie}',"<INPUT name="plik1" type="file" />" ,$pokaz_glwona );
  8. $pokaz_glwona = str_replace('{button}', "<INPUT type="button" name="dodaj_wpis" value="Dodaj wpis" onclick="CzyPelne(this)"></form>",$pokaz_glwona );
  9. $pokaz_glwona = str_replace('{gdzie}', "<select name="gdzie"><option value="0">Wybierz</option>".$gdzie."</select>",$pokaz_glwona );
  10. ?>


Czy :

  1. <?php
  2. $form = "<form name="dodaj_strone" method="POST" action="dodaj_wpis_p.php" enctype="multipart/form-data">";
  3. $anchor = "<INPUT type="text" name="anchor" size="25" maxlength="100"/>";
  4. $url = "<INPUT type="text" name="url" size="25" maxlength="100"/>";
  5. $mail = "<INPUT type="text" name="mail" size="25" maxlength="100" onBlur="SprawdzMaila(this)" />";
  6. $opis = "<TEXTAREA name="opis" rows="10" cols="35"></TEXTAREA>";
  7. $zdjecie = "<INPUT name="plik1" type="file" />";
  8. $button ="<INPUT type="button" name="dodaj_wpis" value="Dodaj wpis" onclick="CzyPelne(this)"></form>";
  9. $gdzie_t = "<select name="gdzie"><option value="0">Wybierz</option>".$gdzie."</select>";
  10.  
  11. $zmienne_tpl = array(
  12. '{form}',
  13. '{anchor}',
  14. '{url}',
  15. '{mail}',
  16. '{opis}',
  17. '{zdjecie}',
  18. '{button}',
  19. '{gdzie}'
  20. );
  21.  
  22. $zmienne_php = array(
  23. $form, 
  24. $anchor,
  25. $url,
  26. $mail,
  27. $opis,
  28. $zdjecie,
  29. $button,
  30. $gdzie_t
  31. );
  32. $pokaz_glwona = str_replace($zmienne_tpl,$zmienne_php ,$pokaz_glwona );
  33. ?>


czy też może, zmienne jak powyżej tylko :
  1. <?php
  2. $trans = array('{form}' => $form, '{anchor}' => $anchor, '{url}' => $url , '{mail}' => $mail, '{opis}'=>$opis, 
  3. '{zdjecie}'=>$zdjecie, '{button}'=>$button, '{gdzie}'=>$gdzie_t);
  4. $pokaz_glwona = strtr($pokaz_glwona, $trans);
  5. ?>



Gdzieś na forum wyczytałem, że należy daną funkcje wrzucić w pętle i porównać wyniki.
Dla wszystkich trzech opcji przy 100 powtórzeniach otrzymałem ok 19 sek. - były wahania, ale dla wszystkich trzech metod czas generowania był praktycznie taki sam.

Gdzieś na forum było że najlepiej zapakować to do tablicy i tylko raz wywołać funkcję str_replace - to jest niby najwydajniejsza opcja, ale dlaczego?? czym kierujecie się przy wyborze metody rozwiązania danego problemu?
Prosiłbym o jakąś bardziej ogólną wypowiedź nie tylko dotyczącą tego przykłądu.

pozdrawiam
mike
Z tego co podałes, wybrałbym metodę [b]2/b]. Bo tylko raz wykonujesz funkcję str_replace i jest to metoda łatwo modyfikowalna.
ActivePlayer
robisz tak:

1. mierzysz czas
2. wykonujesz twoją funkcję 10000 razy.
2. mierzysz czas

dla 2 przypadków...

a teraz zgadnij która funkcja jest szybsza
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.