![]() |
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.
![]() |
![]()
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) |
|
|
![]() |
![]()
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 07:50 |