SlideShare une entreprise Scribd logo
1  sur  30
Wydajność i
optymalizacja
MICHAŁ Ł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

•
•
•
•
•

Akceleratory
Cache key/value
HHVM
KittenPHP
Zephir

• Apache + mod_php
• Apache + fcgi
• nginx + php-fpm
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

 ONESTR

= ECHO "STRING",$VAR,"STRING"

= 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
Wydajność FW
Skoro musisz korzystać z FW i być zgodny ze wszystkimi zasadami na
świecie - wybierz przynajmniej wydajną podstawę

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.html
http://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

Contenu connexe

Similaire à Wydajność i optymalizacja

PHP5. Radocha z programowania
PHP5. Radocha z programowaniaPHP5. Radocha z programowania
PHP5. Radocha z programowania
Wydawnictwo Helion
 
PHP5. Księga eksperta
PHP5. Księga ekspertaPHP5. Księga eksperta
PHP5. Księga eksperta
Wydawnictwo Helion
 
PHP5. Tworzenie stron WWW. Ćwiczenia praktyczne. Wydanie II
PHP5. Tworzenie stron WWW. Ćwiczenia praktyczne. Wydanie IIPHP5. Tworzenie stron WWW. Ćwiczenia praktyczne. Wydanie II
PHP5. Tworzenie stron WWW. Ćwiczenia praktyczne. Wydanie II
Wydawnictwo Helion
 

Similaire à Wydajność i optymalizacja (20)

Webinar symfony
Webinar symfonyWebinar symfony
Webinar symfony
 
PHP5. Radocha z programowania
PHP5. Radocha z programowaniaPHP5. Radocha z programowania
PHP5. Radocha z programowania
 
Laravel/PHP - zderzenie z PDFami
Laravel/PHP - zderzenie z PDFamiLaravel/PHP - zderzenie z PDFami
Laravel/PHP - zderzenie z PDFami
 
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%
 
Jak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHPJak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHP
 
PHP-PM. Hit czy kit?
PHP-PM. Hit czy kit?PHP-PM. Hit czy kit?
PHP-PM. Hit czy kit?
 
Swoole w PHP. Czy to ma sens?
Swoole w PHP. Czy to ma sens?Swoole w PHP. Czy to ma sens?
Swoole w PHP. Czy to ma sens?
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecie
 
PHP5. Księga eksperta
PHP5. Księga ekspertaPHP5. Księga eksperta
PHP5. Księga eksperta
 
Od Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki koduOd Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki kodu
 
Roaaar!
Roaaar!Roaaar!
Roaaar!
 
PHP. Praktyczne wprowadzenie
PHP. Praktyczne wprowadzeniePHP. Praktyczne wprowadzenie
PHP. Praktyczne wprowadzenie
 
Od zera do Automattica
Od zera do AutomatticaOd zera do Automattica
Od zera do Automattica
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Php 4 a bíblia
Php 4   a bíbliaPhp 4   a bíblia
Php 4 a bíblia
 
Websockety w PHP
Websockety w PHPWebsockety w PHP
Websockety w PHP
 
PHP5. Tworzenie stron WWW. Ćwiczenia praktyczne. Wydanie II
PHP5. Tworzenie stron WWW. Ćwiczenia praktyczne. Wydanie IIPHP5. Tworzenie stron WWW. Ćwiczenia praktyczne. Wydanie II
PHP5. Tworzenie stron WWW. Ćwiczenia praktyczne. Wydanie II
 
Najczęstsze błędy początkujących programistów PHP
Najczęstsze błędy początkujących programistów PHPNajczęstsze błędy początkujących programistów PHP
Najczęstsze błędy początkujących programistów PHP
 
Programowanie na wiele platform mobilnych - 2012
Programowanie na wiele platform mobilnych - 2012Programowanie na wiele platform mobilnych - 2012
Programowanie na wiele platform mobilnych - 2012
 
PHP meetup#4 Godek
PHP meetup#4 GodekPHP meetup#4 Godek
PHP meetup#4 Godek
 

Plus de Michal Lukaszewski

Plus de Michal Lukaszewski (9)

How we built a tools stack for the benchmarking AI and what happened next
How we built a tools stack for the benchmarking AI and what happened nextHow we built a tools stack for the benchmarking AI and what happened next
How we built a tools stack for the benchmarking AI and what happened next
 
Dwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędówDwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędów
 
How to fix a code to not corrupt an application
How to fix a code to not corrupt an applicationHow to fix a code to not corrupt an application
How to fix a code to not corrupt an application
 
Distributed Systems @ Code Europe
Distributed Systems @ Code EuropeDistributed Systems @ Code Europe
Distributed Systems @ Code Europe
 
Budowanie aplikacji PHP bez użycia frameworków
Budowanie aplikacji PHP bez użycia frameworkówBudowanie aplikacji PHP bez użycia frameworków
Budowanie aplikacji PHP bez użycia frameworków
 
Domain Events in Distributed Architecture
Domain Events in Distributed ArchitectureDomain Events in Distributed Architecture
Domain Events in Distributed Architecture
 
Action Domain Response
Action Domain ResponseAction Domain Response
Action Domain Response
 
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadkuTechnologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
 
Solid vs php
Solid vs phpSolid vs php
Solid vs php
 

Wydajność i optymalizacja