Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zasady pisania na forum Pro

Tematy na forum Pro mogą zakładać jedynie moderatorzy. W otwartych tematach może pisać każdy, kto ma coś fachowego do powiedzenia. Wszystkie posty nie wnoszące nic do tematu będą natychmiast usuwane, a ich autorzy dostaną ostrzeżenie.
Jeśli uważasz, że jakiś temat jest warty dyskusji na tym forum, zgłoś go w temacie Propozycje.

> Profilowanie aplikacji
nospor
post
Post #1





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Zgodnie z życzeniem: "Profilowanie aplikacji".
Zachęcam do udziału w dyskusji (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
athabus
post
Post #2





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Sh4dow poruszył dosyć ciekawą kwestię, przez którą wczoraj straciłem cały dzień...
Nie zawsze jest pełny dostęp do serwera docelowego i xdebuga można sobie zainstalować tylko lokalnie. Wiadomo jednak, że lokalnie to można przetestować sobie coś "z grubsza", ale aplikacja może zachować się zupełnie inaczej na serwerze.

Ja wczoraj miałem taki problem -> miałem starszą wersję aplikacji zrobioną bez żadnego frameworka itp, bardzo prostą i wykonującą wiele zapytań mysql. Jako, że ciągle wymagała rozwoju i dodawania nowych funkcji w końcu podjąłem decyzję, że odejdę od prowizorki i zrobię to lepiej. Wszystko zostało oparte o Zend_Framework + Propel. Po wgraniu na serwer okazało się, że kluczowa strona aplikacji otwiera się.... 4-5s. Trochę dużo (wersja pierwotna to około 0,5-1 s). Przetestowałem wszystko generatorem obciążeń + xdebugiem i wyszło mi, że nowa wersja jest około 5x wolniejsza od starej. Nie dziwiło mnie to, bo wersja pierwotna była naaaprawdę prosta - dodałem sporo opcji, aplikacja się rozrosła + framework + propel - ogólnie spodziewałem się tego. Xdebugiem wyłapałem wszystkie problemowe kwestie, stuningowałem i różnica zmalała o połowę. O dziwo na serwerze praktycznie brak różnicy. Nadal 4-5 s. na otwarcie najważniejszej strony.

Problem okazał się dość kuriozalny - podczas pisania widoku na szybko umieściłem sprawdzanie czy dane zdjęcie istniej za pomocą funkcji fopen (wiem wiem, głupie to było, ale to tylko prowizorka, którą potem miałem poprawić) - lokalnie nie powodowało to problemów, na serwerze po usunięciu tej jednej linijki strona otwiera się w około 0,3-0,7s czyli prawie 10 razy szybcie.... a w dodatku 2 razy szybciej niż wersja pierwotna, która z kolei w testach lokalnych była 3 razy szybsza od wersji rozbudowanej ;-)

Oczywiście wiem dlaczego wersja finalna jest szybsza na serwerze od pierwotnej. Kod php jest 2-3 razy dłuższy i bardziej skomplikowany w wersji finalnej, ale za to mniej obciąża bazę danych (mniej zapytań + dużo cachowania) - jak wiadomo bardzo często w hostingach problemem jest wydajność bazy danych więc tu teoretycznie wolniejszy program sprawdza się lepiej. Na localhoscie gdzie całą bazę mam dla siebie nie było to odczuwalne, ale na serwerze docelowym różnica była spora.

Problem jednak pozostaje - jak identyfikować wąskie gardła na serwerze? Czy jest jakieś oprogramowanie, które nie wymaga instalacji na serwerze a wystarczy je tylko w skrypcie umieścić?
Oczywiście wiem, że można robić mierzenie czasów flagami... ale porównując to z outputem xdebuga analizowanym przez np Kcachegrind to wartość takiej techniki jest nieporównywalnie mniejsza - no i wymaga dużego nakładu pracy. Może ktoś zna lepsze rozwiązania.
Go to the top of the page
+Quote Post

Posty w temacie
- nospor   Profilowanie aplikacji   27.03.2007, 16:03:15
- - Strzałek   Myślę że śmiało możn...   27.03.2007, 20:04:01
- - Whisller   W PHP Solution ostatnio ukazał się artykuł na tema...   5.04.2007, 17:44:13
- - rashid   Luzne mysli profilerskie 1. Nie optymalizuj dopok...   23.04.2007, 16:04:42
|- - darektbg   Cytat(rashid @ 23.04.2007, 17:04:42 )...   24.04.2007, 06:55:44
|- - rashid   Cytat(darektbg @ 24.04.2007, 07:55:44...   24.04.2007, 12:45:51
- - athabus   Wydaje mi się, że trudno nauczyć się profilowania ...   24.04.2007, 08:28:37
- - marast78   zanim zaczniecie używać jakichkolwiek benchmarków/...   1.05.2007, 12:08:40
|- - Jarod   Cytat(marast78 @ 1.05.2007, 11:08:40 ...   1.05.2007, 14:10:55
|- - cicik   Cytat(marast78 @ 1.05.2007, 13:08:40 ...   1.05.2007, 17:17:01
|- - rashid   Cytat(cicik @ 1.05.2007, 18:17:01 ) T...   1.05.2007, 20:19:31
- - athabus   Wydaje mi się, że jest to podejście od złej strony...   1.05.2007, 12:58:46
- - marast78   różnice są wszystko zależy od tego w jakiej wersji...   1.05.2007, 18:47:29
|- - cicik   Cytat(marast78 @ 1.05.2007, 19:47:29 ...   1.05.2007, 19:09:13
- - sopel   @marast78, to porównanie między php4 i php5 ma się...   1.05.2007, 19:03:40
- - marast78   nie chce prowadzić konwersacji na ten temat, chcia...   1.05.2007, 20:04:49
- - jastu   Korzystam z xDebug ale dla zainteresowanych link   25.05.2007, 15:01:48
- - deirathe   Ja też uważam że powinniśmy zwracać uwagę na to ja...   28.06.2007, 15:54:58
- - Sh4dow   ja osobiscie nie zawsze mialem dostep do servera z...   3.07.2007, 14:43:02
- - athabus   Sh4dow poruszył dosyć ciekawą kwestię, przez którą...   5.07.2007, 11:27:57
- - Krolik   Właśnie - bardzo często problemem jest wydajność b...   3.10.2007, 11:52:58
- - NuLL   Krolik - mowisz o wybieraniu sposobu indeksownia t...   3.10.2007, 12:04:13
- - Krolik   Nie, mam na myśli generalnie dobór indeksów a nie ...   3.10.2007, 12:34:11
- - zimi   nie bardzo to widzę... musiałaby to być złożona kl...   3.10.2007, 20:51:55
- - Krolik   Zimi, nie pytałem, czy to się da zrobić, tylko czy...   4.10.2007, 10:53:07
- - athabus   Jak dla mnie sam pomysł aplikacji jest bardzo dobr...   4.10.2007, 12:57:06
- - zimi   CytatJedynie ma znaczenie kolejność kolumn w indek...   4.10.2007, 22:38:40
|- - Krolik   Cytat(zimi @ 4.10.2007, 21:38:40 ) za...   5.10.2007, 10:25:32
- - NuLL   Krolik to pytanie dotyczy Postgres-a czy MySQLa ? ...   6.10.2007, 02:03:55
- - Krolik   Pytanie dotyczy dowolnego RDBMS. I nie chodzi mi t...   6.10.2007, 09:37:05
- - SongoQ   Padła informacja o sposobie dobierania indeksow i ...   15.10.2007, 17:53:02
- - DeyV   @Krolik - dobre pytanie. Niby takie proste, a jed...   22.10.2007, 23:20:46
- - Krolik   Pytanie było specjalnie takie, żeby nie było jedno...   31.10.2007, 12:58:11


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 08:03