![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Proponuję podzielić się pomysłami na szybkie optymalizacje kodu za pomocą sztuczek: na początek:
podobnie:
trochę z innej beczki:
lub
.. macie jakieś sztuczki, którymi chcecie się podzielić? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 23 Pomógł: 2 Dołączył: 26.04.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam, Proponuję podzielić się pomysłami na szybkie optymalizacje kodu za pomocą sztuczek: na początek:
Zaraz, zaraz... Przecież powyższe konstrukcje sprawdzają coś innego. in_array sprawdza, czy istnieje wartość 'honda' w tablicy $cars, a isset sprawdza czy istnieje element tablicy $cars o kluczu 'honda'. To nie jest to samo ![]() Sam temat uważam za ciekawy, niestety w chwili obecnej nie mam za wiele czasu, aby wprowadzić (i pomyśleć, czy takie mam ![]() ![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Ups... fakt, pospieszyłem się trochę (a miało to być zachęcenie
![]() powinno być:
inne przykłady, oczywiście lepiej
zamiast
lub
Ten post edytował Cezar708 30.11.2007, 12:02:36 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 405 Pomógł: 1 Dołączył: 19.09.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
We wcześniejszym poście piszesz o używaniu ++$i zamiast $i++, a w tym przykładzie nadal używasz $i++. Trochę konsekwencji ![]() -------------------- Rozwój cywilizacji informatycznej to wyścig między programistami, którzy wytwarzają coraz łatwiejsze
programy użytkowe dla idiotów, a światem produkującym coraz lepszych gatunkowo idiotów. Blog: Małolepszy.info |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 1 Dołączył: 8.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
We wcześniejszym poście piszesz o używaniu ++$i zamiast $i++, a w tym przykładzie nadal używasz $i++. Trochę konsekwencji ![]() Szczerze mówiąc zainteresowało mnie, czy czasem parser sam nie optymalizuje takiej pętli. Okazało się, że tak (z resztą sam sprawdziłem), czyli:
oczywiście zasada ta nie dotyczy pre- i postinkrementacji w samym kodzie |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 475 Pomógł: 0 Dołączył: 1.04.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 611 Pomógł: 19 Dołączył: 28.02.2005 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
a skad masz takie informacje? Tak z ciekawości pytam bo nie wydaje mi sie żebyś miał racje, ale nie zagłębiałem sie w działanie parsera php wiec moge sie mylić -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 467 Pomógł: 13 Dołączył: 22.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
a skad masz takie informacje? Tak z ciekawości pytam bo nie wydaje mi sie żebyś miał racje, ale nie zagłębiałem sie w działanie parsera php wiec moge sie mylić To jest logiczne. Wynika z semantyki powyższych wyrażeń. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 611 Pomógł: 19 Dołączył: 28.02.2005 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Wcale z tego nie wynika, drzewo budowane jest na podstawie wyrażeń pasujących leksemów napotkanych przez parser w trakcie analizy. To czy jest post czy pre inkrementacja nie zmienia tutaj nic oprócz zapisu w drzewie i żadne tymczasowe zmienne nie są tworzone. Poza tym w każdym z języków programowania obie te operacje odbywają w czasie 1u i są niepodzielne. No wiec dlatego spytałem skąd takie informacje masz pokaż źródło prosze
-------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 345 Pomógł: 3 Dołączył: 20.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Czyżby temat zaczerpnięty z http://www.jarzebski.pl/read/optymalizacja-php.so ?
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Tylko tutaj własnie chodzi by obliczać to przed pętlą winksmiley.jpg Wtedy skrypt nie musi za każdym razem używać count. To, ze count() jest w for nie znaczy ze jest za kazdym razem wyliczane. Polecam lekture manuala. Wszystko zalezy w ktorym miejscu tego for jest ![]() Cytat Czyżby temat zaczerpnięty z http://www.jarzebski.pl/read/optymalizacja-php.so ? Rownie dobrze mozna powiedziec ze twoj link plagiatuje ten: http://blog.i64.pl/BlogPio/200611/30-optymalizacja-kodu-php/No, przyznawać sie, kto od kogo bierze? ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 611 Pomógł: 19 Dołączył: 28.02.2005 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
a ja dodam to
![]() -------------------- |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 505 Pomógł: 0 Dołączył: 8.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
@Nospor : do podejrzanych należy dodać :
http://ilia.ws/archives/12-PHP-Optimization-Tricks.html http://reinholdweber.com/?p=3 i pewnie jeszcze kilkunastu ![]() -------------------- /dev/blog : http://www.santyago.pl/
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 1 Dołączył: 8.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
Tylko tutaj własnie chodzi by obliczać to przed pętlą ![]() zwroc uwage ze NIE podalem tego w postaci
tylko
gdzie wartosci zmienne $i=0, $count sa wyliczane jeden raz przed rozpoczeciem petli |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 3 Dołączył: 10.09.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
++$i:
miejsce w pamięci najpierw jest inkrementowane a potem jego wartość zwracana $i++ najpierw tworzona jest kopia zmiennej i celem zapamietania wartości przed inkrementacją, faktyczna zmienna i jest inkrementowana (tracony czas pamiec na stworzenie kopii zmiennej) $x = ++$i; (doda 1 i zwroci wynik po dodaniu - raz dodaje, raz zwraca) $x = $i++ (stworzy kopie $i, zwroci jej wartosc do $x, potem dopiero doda 1 - zwiekszy chwilowo zuzycie pamieci i zabierze takt(y) procesora na stworzenie kopii $i);
Najkrocej napisane i najbardziej optymalne (a nie chcac nic pominac proponuje rowniez zadeklarowac zmienne $i i $count zebybyly odpowiedniego typu, np. jak $arr ma 200 kluczy to lepiej typ unsigned char niz domyslny int) Ten post edytował prgTW 1.12.2007, 14:59:04 -------------------- Pozdrawiam
Tomasz Wójcik ..:: prgTW ::.. |
|
|
![]()
Post
#17
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 3 Dołączył: 10.09.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Aaa, sorry, siedze i pisze program w c++ i stąd ta pomyłka. PHP ma dynamiczny typ danych, więc sorki
![]() -------------------- Pozdrawiam
Tomasz Wójcik ..:: prgTW ::.. |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 345 Pomógł: 3 Dołączył: 20.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Rownie dobrze mozna powiedziec ze twoj link plagiatuje ten: http://blog.i64.pl/BlogPio/200611/30-optymalizacja-kodu-php/ No, przyznawać sie, kto od kogo bierze? Ale spójrz, w podanym przeze mnie linku mamy 3 przykłady, które są identyczne jak w tym temacie. ![]() ![]() |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 611 Pomógł: 19 Dołączył: 28.02.2005 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
++$i: miejsce w pamięci najpierw jest inkrementowane a potem jego wartość zwracana $i++ najpierw tworzona jest kopia zmiennej i celem zapamietania wartości przed inkrementacją, faktyczna zmienna i jest inkrementowana (tracony czas pamiec na stworzenie kopii zmiennej) $x = ++$i; (doda 1 i zwroci wynik po dodaniu - raz dodaje, raz zwraca) $x = $i++ (stworzy kopie $i, zwroci jej wartosc do $x, potem dopiero doda 1 - zwiekszy chwilowo zuzycie pamieci i zabierze takt(y) procesora na stworzenie kopii $i); nie no prosze Cie ..... wiesz co to architektura komupterów, prof. Biernat i sumator? podaj fakty dlaczego i gdzie tak napisane. - jak napisałem te operajce da sie wykonać w 1 takcie cyklu procesora, myle sie ? - jedyny problem może wynikać z budowy drzewa parsera ale to zaraz na google znajde moze ![]() Ten post edytował sticker 2.12.2007, 01:53:47 -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 19:56 |