SlideShare a Scribd company logo
1 of 17
Profilowanie aplikacji
Piotr Robak
piotr.r@devpark.pl
#Plan Prezentacji
1. Czym jest profilowanie
2. Wymagania
3. Możliwości profilera
4. Jak to działa?
5. Konfiguracja
6. Co ważne?
7. Profiler vs debug bar
#1. Czym jest profilowanie
Jest to forma dynamicznej analizy programu.
Polega na badaniu zachowania program używając
informacji zdobytych podczas jego wykonywania.
#2. Wymagania
• Xdebug (debugowanie)
• Program do odczytu (opcjonalnie)
Programy:
● Windows, MAC: QCacheGrind
● Linux: KCacheGrind
● Web: WebGrind
● Php Storm
#3. Możliwości profilera
• Wykorzystanie pamięci
• Częstotliwość wywoływania
• Czas wykonywania
#4. Jak to działa?
1. Xdebug tworzy migawkę (snapshot)
2. Zapisuję ją na dysku jako plik do wskazanego folderu z
rozszerzeniem .out domyślnie dodając na końcu process ID
#5. Konfiguracja
Opcje w php.ini
• xdebug.profiler_enable
• xdebug.profiler_output_dir
• xdebug.profiler_enable_trigger
• xdebug.profiler_output_name
• xdebug.profiler_enable_trigger_value
Chrome extension: Xdebug Helper
#6. Co ważne?
Oszczędność dyskowa!
Jak podaje dokumentacja rozmiar snapshot’ów może sięgać nawet 500 MB
Rozpoznawanie pliku!
Domyślnie nazwy snapshotów przyjmują nazwy process ID, lub crc32 folder
hash
#6. Co ważne?
Oznaczenie w nazwie Wartość
%c Crc32 aktualnie ustawionego folderu
%p Proces id
%r Losowa liczba
%s Nazwa skryptu
%t Timestamp (sekundy)
%u Timestamp (milisekundy)
%H $_SERVER[‘HTTP_HOST’]
%R $_SERVER[‘REQUEST_URI’]
$U $_SERVER[‘UNIQUE_ID’]
$S Session_id
%% Literal %
#7. Profiler vs debug bar
Zwykle profiluje się je, aby dowiedzieć się, które części programu
zoptymalizować, by zwiększyć jego ogólną prędkość lub zmniejszyć wymagania
pamięci.
#7. Profiler vs debug bar
1. Odnajdywanie cykli - wł./wył.
2. Jednostka zasobu - wartość procentowa lub konkretna, np. ms
3. Zasób pokazany relatywnie do funkcji wywołującej (rodzica) - wł./wył
#7. Profiler vs debug bar
Wyszukiwanie
#7. Profiler vs debug bar
Filtrowanie
#7. Profiler vs debug bar
Grafy
#7. Profiler vs debug bar
Kod źródłowy
Piotr Robak
piotr.r@devpark.pl

More Related Content

Similar to Wstęp do profilowania aplikacji

Shall we play a game? PL version
Shall we play a game? PL versionShall we play a game? PL version
Shall we play a game? PL versionMaciej Lasyk
 
Niezbędnik administratora - prezentacja Bartosz Sałach
Niezbędnik administratora - prezentacja Bartosz SałachNiezbędnik administratora - prezentacja Bartosz Sałach
Niezbędnik administratora - prezentacja Bartosz SałachBartosz Sałach
 
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Dariusz Kacban
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 
Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Jak przyspieszyłem aplikację produkcyjną o ponad 40%Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Jak przyspieszyłem aplikację produkcyjną o ponad 40%Laravel Poland MeetUp
 
PHP5. Bezpieczne programowanie. Leksykon kieszonkowy
PHP5. Bezpieczne programowanie. Leksykon kieszonkowyPHP5. Bezpieczne programowanie. Leksykon kieszonkowy
PHP5. Bezpieczne programowanie. Leksykon kieszonkowyWydawnictwo Helion
 
Girls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząćGirls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząćmonterail
 
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Grzegorz Bartman
 
The story of GOG.com Cache - PHPers 2014 ( PL )
 The story of GOG.com Cache - PHPers 2014 ( PL ) The story of GOG.com Cache - PHPers 2014 ( PL )
The story of GOG.com Cache - PHPers 2014 ( PL )GOG.com dev team
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Adrian Kalbarczyk
 
10 przykazań bezpiecznego programowania
10 przykazań bezpiecznego programowania10 przykazań bezpiecznego programowania
10 przykazań bezpiecznego programowaniaSecuRing
 
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech DworakowskiPROIDEA
 
Zastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework DjangoZastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework DjangoDominik Szopa
 
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Mateusz Paprocki, PMP
 

Similar to Wstęp do profilowania aplikacji (20)

Shall we play a game? PL version
Shall we play a game? PL versionShall we play a game? PL version
Shall we play a game? PL version
 
Niezbędnik administratora - prezentacja Bartosz Sałach
Niezbędnik administratora - prezentacja Bartosz SałachNiezbędnik administratora - prezentacja Bartosz Sałach
Niezbędnik administratora - prezentacja Bartosz Sałach
 
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
 
M4j3
M4j3M4j3
M4j3
 
M4j3
M4j3M4j3
M4j3
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Jak przyspieszyłem aplikację produkcyjną o ponad 40%Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Jak przyspieszyłem aplikację produkcyjną o ponad 40%
 
PHP5. Bezpieczne programowanie. Leksykon kieszonkowy
PHP5. Bezpieczne programowanie. Leksykon kieszonkowyPHP5. Bezpieczne programowanie. Leksykon kieszonkowy
PHP5. Bezpieczne programowanie. Leksykon kieszonkowy
 
Iron Python I Dlr
Iron Python I DlrIron Python I Dlr
Iron Python I Dlr
 
Girls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząćGirls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząć
 
Dlaczego flopsar
Dlaczego flopsarDlaczego flopsar
Dlaczego flopsar
 
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
 
The story of GOG.com Cache - PHPers 2014 ( PL )
 The story of GOG.com Cache - PHPers 2014 ( PL ) The story of GOG.com Cache - PHPers 2014 ( PL )
The story of GOG.com Cache - PHPers 2014 ( PL )
 
Grok Prezentacja
Grok PrezentacjaGrok Prezentacja
Grok Prezentacja
 
university day 1
university day 1university day 1
university day 1
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)
 
10 przykazań bezpiecznego programowania
10 przykazań bezpiecznego programowania10 przykazań bezpiecznego programowania
10 przykazań bezpiecznego programowania
 
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
 
Zastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework DjangoZastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework Django
 
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
 

More from Laravel Poland MeetUp

WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...Laravel Poland MeetUp
 
Kilka slajdów o castowaniu atrybutów w Eloquent
Kilka slajdów o castowaniu atrybutów w EloquentKilka slajdów o castowaniu atrybutów w Eloquent
Kilka slajdów o castowaniu atrybutów w EloquentLaravel Poland MeetUp
 
Cykl życia zapytania HTTP (pod maską)
Cykl życia zapytania HTTP (pod maską)Cykl życia zapytania HTTP (pod maską)
Cykl życia zapytania HTTP (pod maską)Laravel Poland MeetUp
 
Enumy w Laravelu - dlaczego warto stosować?
Enumy w Laravelu - dlaczego warto stosować?Enumy w Laravelu - dlaczego warto stosować?
Enumy w Laravelu - dlaczego warto stosować?Laravel Poland MeetUp
 
Laravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelnianiaLaravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelnianiaLaravel Poland MeetUp
 
Przegląd najciekawszych wtyczek do Laravela
Przegląd najciekawszych wtyczek do LaravelaPrzegląd najciekawszych wtyczek do Laravela
Przegląd najciekawszych wtyczek do LaravelaLaravel Poland MeetUp
 
Laravel Dusk - prosty przepis na testy E2E
Laravel Dusk - prosty przepis na testy E2ELaravel Dusk - prosty przepis na testy E2E
Laravel Dusk - prosty przepis na testy E2ELaravel Poland MeetUp
 
Laravel Octane - czy na pewno taki szybki?
Laravel Octane - czy na pewno taki szybki?Laravel Octane - czy na pewno taki szybki?
Laravel Octane - czy na pewno taki szybki?Laravel Poland MeetUp
 
Automatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHPAutomatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHPLaravel Poland MeetUp
 
Wstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Wstęp do Gitlab CI/CD w aplikacjach napisanych w LaravelWstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Wstęp do Gitlab CI/CD w aplikacjach napisanych w LaravelLaravel Poland MeetUp
 
Laravel Collection - tablice na sterydach
Laravel Collection - tablice na sterydachLaravel Collection - tablice na sterydach
Laravel Collection - tablice na sterydachLaravel Poland MeetUp
 

More from Laravel Poland MeetUp (20)

WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
 
Kilka slajdów o castowaniu atrybutów w Eloquent
Kilka slajdów o castowaniu atrybutów w EloquentKilka slajdów o castowaniu atrybutów w Eloquent
Kilka slajdów o castowaniu atrybutów w Eloquent
 
Licencje otwartego oprogramowania
Licencje otwartego oprogramowaniaLicencje otwartego oprogramowania
Licencje otwartego oprogramowania
 
Jak przemycić Shape Up do Scruma?
Jak przemycić Shape Up do Scruma?Jak przemycić Shape Up do Scruma?
Jak przemycić Shape Up do Scruma?
 
Cykl życia zapytania HTTP (pod maską)
Cykl życia zapytania HTTP (pod maską)Cykl życia zapytania HTTP (pod maską)
Cykl życia zapytania HTTP (pod maską)
 
Enumy w Laravelu - dlaczego warto stosować?
Enumy w Laravelu - dlaczego warto stosować?Enumy w Laravelu - dlaczego warto stosować?
Enumy w Laravelu - dlaczego warto stosować?
 
Laravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelnianiaLaravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelniania
 
Przegląd najciekawszych wtyczek do Laravela
Przegląd najciekawszych wtyczek do LaravelaPrzegląd najciekawszych wtyczek do Laravela
Przegląd najciekawszych wtyczek do Laravela
 
Walidacja w Laravelu
Walidacja w LaraveluWalidacja w Laravelu
Walidacja w Laravelu
 
(prawie) Wszystko o Tinkerze
(prawie) Wszystko o Tinkerze(prawie) Wszystko o Tinkerze
(prawie) Wszystko o Tinkerze
 
Laravel Dusk - prosty przepis na testy E2E
Laravel Dusk - prosty przepis na testy E2ELaravel Dusk - prosty przepis na testy E2E
Laravel Dusk - prosty przepis na testy E2E
 
Laravel Octane - czy na pewno taki szybki?
Laravel Octane - czy na pewno taki szybki?Laravel Octane - czy na pewno taki szybki?
Laravel Octane - czy na pewno taki szybki?
 
Laravel Jobs i PHP8
Laravel Jobs i PHP8Laravel Jobs i PHP8
Laravel Jobs i PHP8
 
Wszystko o Laravel Livewire
Wszystko o Laravel Livewire Wszystko o Laravel Livewire
Wszystko o Laravel Livewire
 
Laravel/PHP - zderzenie z PDFami
Laravel/PHP - zderzenie z PDFamiLaravel/PHP - zderzenie z PDFami
Laravel/PHP - zderzenie z PDFami
 
Action-based Laravel
Action-based LaravelAction-based Laravel
Action-based Laravel
 
Automatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHPAutomatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHP
 
Wstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Wstęp do Gitlab CI/CD w aplikacjach napisanych w LaravelWstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Wstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
 
Laravel Collection - tablice na sterydach
Laravel Collection - tablice na sterydachLaravel Collection - tablice na sterydach
Laravel Collection - tablice na sterydach
 
Laravel 8.0 - co nowego?
Laravel 8.0 - co nowego?Laravel 8.0 - co nowego?
Laravel 8.0 - co nowego?
 

Wstęp do profilowania aplikacji

  • 3. #Plan Prezentacji 1. Czym jest profilowanie 2. Wymagania 3. Możliwości profilera 4. Jak to działa? 5. Konfiguracja 6. Co ważne? 7. Profiler vs debug bar
  • 4. #1. Czym jest profilowanie Jest to forma dynamicznej analizy programu. Polega na badaniu zachowania program używając informacji zdobytych podczas jego wykonywania.
  • 5. #2. Wymagania • Xdebug (debugowanie) • Program do odczytu (opcjonalnie) Programy: ● Windows, MAC: QCacheGrind ● Linux: KCacheGrind ● Web: WebGrind ● Php Storm
  • 6. #3. Możliwości profilera • Wykorzystanie pamięci • Częstotliwość wywoływania • Czas wykonywania
  • 7. #4. Jak to działa? 1. Xdebug tworzy migawkę (snapshot) 2. Zapisuję ją na dysku jako plik do wskazanego folderu z rozszerzeniem .out domyślnie dodając na końcu process ID
  • 8. #5. Konfiguracja Opcje w php.ini • xdebug.profiler_enable • xdebug.profiler_output_dir • xdebug.profiler_enable_trigger • xdebug.profiler_output_name • xdebug.profiler_enable_trigger_value Chrome extension: Xdebug Helper
  • 9. #6. Co ważne? Oszczędność dyskowa! Jak podaje dokumentacja rozmiar snapshot’ów może sięgać nawet 500 MB Rozpoznawanie pliku! Domyślnie nazwy snapshotów przyjmują nazwy process ID, lub crc32 folder hash
  • 10. #6. Co ważne? Oznaczenie w nazwie Wartość %c Crc32 aktualnie ustawionego folderu %p Proces id %r Losowa liczba %s Nazwa skryptu %t Timestamp (sekundy) %u Timestamp (milisekundy) %H $_SERVER[‘HTTP_HOST’] %R $_SERVER[‘REQUEST_URI’] $U $_SERVER[‘UNIQUE_ID’] $S Session_id %% Literal %
  • 11. #7. Profiler vs debug bar Zwykle profiluje się je, aby dowiedzieć się, które części programu zoptymalizować, by zwiększyć jego ogólną prędkość lub zmniejszyć wymagania pamięci.
  • 12. #7. Profiler vs debug bar 1. Odnajdywanie cykli - wł./wył. 2. Jednostka zasobu - wartość procentowa lub konkretna, np. ms 3. Zasób pokazany relatywnie do funkcji wywołującej (rodzica) - wł./wył
  • 13. #7. Profiler vs debug bar Wyszukiwanie
  • 14. #7. Profiler vs debug bar Filtrowanie
  • 15. #7. Profiler vs debug bar Grafy
  • 16. #7. Profiler vs debug bar Kod źródłowy