wydajność i optymalizacja
TRANSCRIPT
![Page 1: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/1.jpg)
Wydajność i optymalizacjaMICHAŁ ŁUKASZEWSKI
/LUKASZEWSKI.MICHAL/ M_LUKASZEWSKI
![Page 2: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/2.jpg)
Problem?
PHP jest coraz szybszy Sprzęt coraz tańszy Jesteśmy świetnymi programistami
![Page 3: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/3.jpg)
Problem!
Język jest tak szybki jak mu się na to pozwoli Sprzęt mamy taki jak dostaniemy Jesteśmy świetnymi programistami?
![Page 4: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/4.jpg)
Rozwiązania?
To proste!
Skalowanie pionowe Skalowanie poziome
• Apache + mod_php• Apache + fcgi• nginx + php-fpm
• Akceleratory• Cache key/value• HHVM• KittenPHP• Zephir
![Page 5: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/5.jpg)
HHVM vs nginx + php-fpm 5.5
Symfony "Hello world" test
A little heavier work
http://www.alexfu.it/2013/10/22/symfony-benchmark-on-hhvm.html
![Page 6: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/6.jpg)
HHVM
prawie zgodny z PHP 5.4 prawie działają na nim najpopularniejsze frameworki
![Page 7: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/7.jpg)
Zephir
Prawie PHP w składni prawie C Prawie jak JIT compiler Opcache na skompilowane obiekty, nie kod bajtowy Obłędnie szybki
![Page 8: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/8.jpg)
So...
From this to this
![Page 9: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/9.jpg)
Sratatata
![Page 10: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/10.jpg)
Let's the war begin
Kiedy zaczynamy optymalizację? Od czego zaczynamy optymalizację? Kiedy kończymy optymalizację?
A warto w ogóle zaczynać?
![Page 11: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/11.jpg)
Dig deeper
Optymalna architektura Optymalna implementacja Mikro optymalizacja
![Page 12: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/12.jpg)
Mikro optymalizacja
echo con.cat vs echo seq,uence
![Page 13: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/13.jpg)
Mikro optymalizacja
SEQ = ECHO 'STRING',$VAR,'STRING' CONCAT = ECHO "STRING",$VAR,"STRING" ONESTR = ECHO "STRING $VAR STRING"
![Page 14: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/14.jpg)
![Page 15: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/15.jpg)
How to kill the machine
"anty-YAGNI" Over-engineering "anty-KISS"
![Page 16: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/16.jpg)
SOLID?
![Page 17: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/17.jpg)
Fight!
Obiektowy vs strukturalny Elastyczny vs dedykowany Nowoczesne fw vs brak fw PSR vs minimalizm Kasa vs kasa
![Page 18: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/18.jpg)
Skoro musisz korzystać z FW i być zgodny ze wszystkimi zasadami na świecie - wybierz przynajmniej wydajną podstawę
Wydajność FW
http://www.ruilog.com/blog/view/b6f0e42cf705.html
![Page 19: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/19.jpg)
![Page 20: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/20.jpg)
![Page 21: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/21.jpg)
HHVM vs "popularne" fw
![Page 22: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/22.jpg)
Seek & destroy
Analiza statyczna Profilowanie Load testy
![Page 23: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/23.jpg)
Analiza statyczna
Przesłanki, nie fakty Skomplikowany kod jest podejrzany Prosty wcale nie musi być wydajny
Pluginy do IDE Sonar
![Page 24: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/24.jpg)
Profilowanie
Bardzo dobrze! Programiści to kłamczuszki?
Profilowanie = aplikacja zapełniona danymi Profilowanie = scenariusze testowe Profilowanie = przewidywanie ruchu
![Page 25: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/25.jpg)
Przykład
Drupal Symfony
http://itarato.blogspot.com/2013/01/drupal-and-symfony-with-xdebug-and.htmlhttp://www.ruilog.com/blog/view/b6f0e42cf705.html
Laravel
![Page 26: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/26.jpg)
![Page 27: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/27.jpg)
Load testy
Środowisko musi odpowiadać warunkom produkcyjnym Aplikacja zapełniona danymi
Przygotowanie scenariuszy jest upierdliwe Analiza wyników wcale nie taka prosta Czasochłonne "Dość" późno
![Page 28: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/28.jpg)
Gentlemen Start Your Engines
w 80% przypadków po prostu pisz dobrze pozostałe 20% (optymalizowane pod kątem wydajności) będą
wymagały zatrudnienia pozostałych 80% wiedzy jaką masz, możesz mieć i - kiedyś - powinieneś mieć.
![Page 29: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/29.jpg)
![Page 30: Wydajność i optymalizacja](https://reader031.vdocuments.mx/reader031/viewer/2022013013/58ef21591a28abad5e8b4611/html5/thumbnails/30.jpg)
CC-2.0
zdjęcia pochodzą z
http://www.flickr.com/photos/sarahsue/1367962715/ http://www.flickr.com/photos/myoldpostcards/8350545853/ http://www.flickr.com/photos/56216216@N07/9094516993/ http://www.flickr.com/photos/devincrawford/532081408/ http://www.flickr.com/photos/creative809/4649207340/ http://www.flickr.com/photos/85709842@N03/7957933258/ http://www.flickr.com/photos/71928544@N04/8670224587/ Vodafone McLaren Mercedes press materials