Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ile maks. można użyć pętli (praktycznie)?
Forum PHP.pl > Forum > PHP
Joachim Peters
Witam,

Chciałbym wiedzieć ile można maks. użyć pętli podczas jednego wykonywania skryptu i po jakiej ich ilości skrypt się znacznie spowolni.
Chodzi o pętle foreach.

Pozdrawiam
wookieb
Zależy od maszyny na której działa i ustawień php.ini (ilość pamieći na skrypt, max czas wykonywania skryptu)
Joachim Peters
Nie da się stwierdzić na oko po ilu się skrypt "wywali"? Jeśli chodzi o ustawienia php.ini to przyjmijmy standardowe.
luck
Zależy również (jeśli nie przede wszystkim) od tego, co robisz w danym przebiegu pętli. Co innego jeśli np. po prostu zwiększasz o 1 jakiś licznik, a co innego, gdy pobierasz jakieś dane przez CURL lub SOAP i ładujesz je do tablicy. Wiadomo, że w drugim przypadku zasoby zostaną wyczerpane szybciej, a każda iteracja będzie trwała dłużej.
wookieb
Nie. Możesz sobie sam testowac. Pamietaj ze to bardzo roznie bywa z czasem wykonywania skryptów.
Joachim Peters
Powiedzcie mi jeszcze tylko czy przy budowie drzewek stosuje się rekurencje z użyciem pętli? Ta pętla w takim przypadku jest wczytywana tyle razy, jakie jest duże zagłębienie?
wookieb
Można pętli while ale rekurencja też nie jest zła. Wszystko zależy od toku myślenia programisty. Ja wole stosować rekurencje w takim przypadku.
Joachim Peters
Nadałeś jakieś ograniczenie co do ilości zagłębienia? Co w przypadku kiedy poziom zagłębienie będzie wynosić 500?
luck
Szczerze to mówimy trochę o niczym... Sprawdzałeś jak długo wykonuje się pętla powiedzmy dla 5 poziomów zagłębienia? Będziesz wtedy mniej więcej wiedział czego możesz oczekiwać, gdy liczba zagłębień wzrośnie np. 100 razy.
wookieb
Tak. Daje limit jako dodatkowy parametr, Zreszta... Masz coś co ma az 500 zagłębien? praktycznie zdarza sie to tak samo rzadko jak trafienie w lotku 6...
.radex
napisanie funkcji rekurencyjnej jest bajecznie proste, ale mniej wydajne. Przy naprawdę dużej funkcji rekurencyjnej może nieźle zamulić pamięć (stos).

http://zyxist.com/pokaz.php/pozbadz_sie_rekurencji
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.