![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam.
W ostatnim czasie zauważyłem ,ze na liscie funkcji deprecjonowanych jest each() Od jakiegoś czasu przerabiałem pętle foreach() na pętle " while (list($id, $nazwa) = each($my_array)) { .. } " . Widziałem różne testy, gdzie pętla while była szybsza, podobno nie robi w pamięcie serwera kopii tablicy jak pętla foreach(). Jaka jest Wasza opinia na ten temat? Muszę spowrotem zamieniać na foreach() ? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Odczułeś różnicę w wydajności zamieniając foreach na while?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Odczułeś różnicę w wydajności zamieniając foreach na while? Nie chce się opierać na "odczuciach" i za 6 lat płakać, że stworzony niewydajny moloch nadaje się na śmietnik. Chciałbym w każdym możliwym miejscu poprawiać wydajnośc, i nowe elementy tworzyć teżwoparciu o to. To chyba nic złego? ![]() Ten post edytował kukix 6.10.2017, 17:09:26 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Stary, za 6 lat to to co napisałeś i tak pójdzie do kosza.
Nie zawracaj sobie dupy takimi pierdołami, bo są ważniejsze rzeczy do roboty niż medytacja 2 tygodnie nad wydajnością while vs foreach. Uwierz mi że to nie ma takiego znaczenia. Nooo chyyyybaaaa że mielisz w pętli te tablice wielkości 10000000 elementów. Ale wtedy to raczej zastanowiłbym się po kiego taka wielka tablica. Tak więc dla dobra Twojego, nie rób optymalizacji tam gdzie ich nie potrzebujesz na tą chwilę to zamiast pisać aplikację to stoisz w miejscu. PS. I tak nie napiszesz idealnej aplikacji ![]() Ten post edytował Pyton_000 6.10.2017, 17:15:42 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 879 Pomógł: 230 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Python ma rację, optymalizacja pętli ma sens jeżeli nasz kod przetwarza dziesiątki tysięcy informacji, a nie zwykle proste informacje.
A ja ze swojej strony powiem, daną pętle stosuje się zgodnie z potrzebą, dlatego mamy kilka rodzai pętli do użycia pisząc kod. na http://www.phpbench.com/ masz wynikowe testy wydajnościowe między foreach a while ![]() Ten post edytował Tomplus 6.10.2017, 17:24:39 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Masz... żeby nie było że się czepiam:
i wyniki: http://bin.devsphp.pl/fe4c17dbf540f3403a3e...8bfe037b676.sql |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 879 Pomógł: 230 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Punkt
![]() |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat podobno nie robi w pamięcie serwera kopii tablicy - kiedyś na pewno tak było, teraz nie wiem i może to mieć znaczenie dla zużycia pamięci a i to w czasach, gdy miałeś do dyspozycji kilka MB bez wsparcia różnych middleware i trzeba było się poważnie zastanawiać, co wrzucać do tablicy a co nie.PHP jest prostym językiem skryptowym do określonych zastosowań i jeśli np. chcesz w PHP napisać algorytm analizujący czarne dziury czy kwazary to znaczy, że wybrałeś złą technologię ![]() Nie ma sensu się zastanawiać nad $z++ vs ++$z bo nawet najlepszy kod PHP nigdy nie dorówna językom kompilowanym. Jeśli wydajność algorytmu jest kluczowa a nie np. szybkość klepania backendu to należy użyć innej technologii. Optymalizując algorytm w PHP na typowej stronie zyskasz może 0,1%, bo 99,99% problemów z wolno ładującymi się stronami to zły model danych, nadmierna ilość zewnętrznych requestów, słaby serwer, złe projektowanie całej strony, skopana część frontendowa i tak dalej. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Przykład z $++ i ++$z słabo trafiony
![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 09:43 |