Wydajność i optymalizacja

30
Wydajność i optymalizacja MICHAŁ ŁUKASZEWSKI /LUKASZEWSKI.MICHAL / M_LUKASZEWSKI

Transcript of Wydajność i optymalizacja

Page 1: Wydajność i optymalizacja

Wydajność i optymalizacjaMICHAŁ ŁUKASZEWSKI

/LUKASZEWSKI.MICHAL/ M_LUKASZEWSKI

Page 2: Wydajność i optymalizacja

Problem?

PHP jest coraz szybszy Sprzęt coraz tańszy Jesteśmy świetnymi programistami

Page 3: Wydajność i optymalizacja

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

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

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

HHVM

prawie zgodny z PHP 5.4 prawie działają na nim najpopularniejsze frameworki

Page 7: Wydajność i optymalizacja

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

So...

From this to this

Page 9: Wydajność i optymalizacja

Sratatata

Page 10: Wydajność i optymalizacja

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

Dig deeper

Optymalna architektura Optymalna implementacja Mikro optymalizacja

Page 12: Wydajność i optymalizacja

Mikro optymalizacja

echo con.cat vs echo seq,uence

Page 13: Wydajność i optymalizacja

Mikro optymalizacja

SEQ = ECHO 'STRING',$VAR,'STRING' CONCAT = ECHO "STRING",$VAR,"STRING" ONESTR = ECHO "STRING $VAR STRING"

Page 14: Wydajność i optymalizacja
Page 15: Wydajność i optymalizacja

How to kill the machine

"anty-YAGNI" Over-engineering "anty-KISS"

Page 16: Wydajność i optymalizacja

SOLID?

Page 17: Wydajność i optymalizacja

Fight!

Obiektowy vs strukturalny Elastyczny vs dedykowany Nowoczesne fw vs brak fw PSR vs minimalizm Kasa vs kasa

Page 18: Wydajność i optymalizacja

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
Page 20: Wydajność i optymalizacja
Page 21: Wydajność i optymalizacja

HHVM vs "popularne" fw

Page 22: Wydajność i optymalizacja

Seek & destroy

Analiza statyczna Profilowanie Load testy

Page 23: Wydajność i optymalizacja

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

Profilowanie

Bardzo dobrze! Programiści to kłamczuszki?

Profilowanie = aplikacja zapełniona danymi Profilowanie = scenariusze testowe Profilowanie = przewidywanie ruchu

Page 25: Wydajność i optymalizacja

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
Page 27: Wydajność i optymalizacja

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

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
Page 30: Wydajność i optymalizacja

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