Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Debugger - Wąskie gardło
cojack
post
Post #1





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Chciałbym się zapytać Was jaki macie sposób na rozwiązanie tego problemu z wąskim gardłem w debuggerze. Otóż jeżeli chcemy posiadać informację o czasie wykonania się poszczególnych metod w naszej aplikacji, to piszemy sobie np dwie funkcje w debuggerze start() i stop() które mierzą czas wykonania się metody. Teraz w takiej metodzie te dwie funkcje trzeba odpalić, także przykład:

  1.  
  2. public function waskieGardlo() {
  3. debugger::start( __CLASS__, __FUNCTION__ );
  4. // coś se tu robimy coś tam coś
  5. debugger::stop();
  6. }


no i teraz mamy wywołaną dwie metody nie potrzebnie gdy np nie mamy włączonego debuggera, także zróbmy to inaczej:

  1. public function waskieGardlo() {
  2. if( debugger::$enable ) {
  3. debugger::start( __CLASS__, __FUNCTION__ );
  4. // coś se tu robimy coś tam coś
  5. }
  6. if(debugger::$enable)
  7. debugger::stop();
  8. }


Teraz dwa razy sprawdzamy czy debbuger jest włączony, co mi też się zbytnio nie podoba, to może inaczej:

  1. public function waskieGardlo() {
  2. if( debugger::$enable ) {
  3. debugger::start( __CLASS__, __FUNCTION__ );
  4. // coś se tu robimy coś tam
  5. debugger::stop();
  6. } else
  7. // coś se tu robimy coś tam
  8. }


Teraz podwójnie piszemy kod którą jest już napisany + np wyłapywanie błędów itp... Jest też i czwarta metoda:

  1. public static function start( $class, $method ) {
  2. if( self::$enable ) {
  3. // sprawdzamy sobie czas
  4. }
  5. }
  6.  
  7. public static function stop() {
  8. if( self::$enable ) {
  9. // zliczamy sobie czas
  10. }
  11. }


I taka opcja w połączeniu z pierwszą opcją wydaje się być najbardziej optymalną, ale, aczkolwiek nie wydaje mi się być najlepszą. Macie na to jakieś rozwiązanie? Pusta klasa debuggera w ogóle mnie nie interesuje, czy tam puste metody, to odpada.
Go to the top of the page
+Quote Post
nospor
post
Post #2





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




a nie mozesz po prostu włączyc profilera, odpalic skrypt a nastepnie logi z profilera przejrzec w specjalnym programie? Tam ładnie widać co jest wąskim gardłem.
Go to the top of the page
+Quote Post
cojack
post
Post #3





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Cytat
a nie mozesz po prostu włączyc profilera,


yyy czego?
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




myslalem ze uzywasz XDEBUG
Jesli wiec nie uzywasz to się nim zainteresuj. Bardzo ułatwi ci życie w tych sprawach (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
cojack
post
Post #5





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Masz może jakiś dobry artykuł jak to z eclipse (pdt) połączyć w kupę i jak to używać?
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




ale ty miales profilowac a nie debugowa. do profilowania eclipse nie jest potrzebny (IMG:style_emoticons/default/smile.gif)
Ustawiasz w php.ini wpisz ze chcesz profilowac i odpalasz skrypt. Nastepnie wszystko co sie dzieje, wlacznie z czasem i pamiecia jest logowane. Nastepnie przy pomocy np. kCacheGrind mozesz przeanalizowac te logi, znaleźć wąskie gardło, wizuwalnie przejrzec rezultaty

A jesli chcesz debugowac w eclipse to ja korzystalem z samego opisu co w necie znalazlem przy okazji xdebug i eclipse
Go to the top of the page
+Quote Post
zzeus
post
Post #7





Grupa: Zarejestrowani
Postów: 441
Pomógł: 71
Dołączył: 3.09.2007
Skąd: wrocław

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


http://devzone.zend.com/article/2803-Introducing-xdebug - tutaj masz bardzo fajnie opisane to co będzie Ci potrzebne

Ten post edytował zzeus 15.04.2010, 09:14:19
Go to the top of the page
+Quote Post

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: 22.08.2025 - 22:01