Wydajność i optymalizacja
-
Upload
michal-lukaszewski -
Category
Technology
-
view
763 -
download
0
Transcript of Wydajność i optymalizacja
Wydajność i optymalizacjaMICHAŁ ŁUKASZEWSKI
/LUKASZEWSKI.MICHAL/ M_LUKASZEWSKI
Problem?
PHP jest coraz szybszy Sprzęt coraz tańszy Jesteśmy świetnymi programistami
Problem!
Język jest tak szybki jak mu się na to pozwoli Sprzęt mamy taki jak dostaniemy Jesteśmy świetnymi programistami?
Rozwiązania?
To proste!
Skalowanie pionowe Skalowanie poziome
• Apache + mod_php• Apache + fcgi• nginx + php-fpm
• Akceleratory• Cache key/value• HHVM• KittenPHP• Zephir
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
HHVM
prawie zgodny z PHP 5.4 prawie działają na nim najpopularniejsze frameworki
Zephir
Prawie PHP w składni prawie C Prawie jak JIT compiler Opcache na skompilowane obiekty, nie kod bajtowy Obłędnie szybki
So...
From this to this
Sratatata
Let's the war begin
Kiedy zaczynamy optymalizację? Od czego zaczynamy optymalizację? Kiedy kończymy optymalizację?
A warto w ogóle zaczynać?
Dig deeper
Optymalna architektura Optymalna implementacja Mikro optymalizacja
Mikro optymalizacja
echo con.cat vs echo seq,uence
Mikro optymalizacja
SEQ = ECHO 'STRING',$VAR,'STRING' CONCAT = ECHO "STRING",$VAR,"STRING" ONESTR = ECHO "STRING $VAR STRING"
How to kill the machine
"anty-YAGNI" Over-engineering "anty-KISS"
SOLID?
Fight!
Obiektowy vs strukturalny Elastyczny vs dedykowany Nowoczesne fw vs brak fw PSR vs minimalizm Kasa vs kasa
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
HHVM vs "popularne" fw
Seek & destroy
Analiza statyczna Profilowanie Load testy
Analiza statyczna
Przesłanki, nie fakty Skomplikowany kod jest podejrzany Prosty wcale nie musi być wydajny
Pluginy do IDE Sonar
Profilowanie
Bardzo dobrze! Programiści to kłamczuszki?
Profilowanie = aplikacja zapełniona danymi Profilowanie = scenariusze testowe Profilowanie = przewidywanie ruchu
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
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
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ć.
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