Daniel Częstki

Daniel Częstki senior php developer

Temat: Ciekawy artykuł o wydajności frameworków PHP

http://www.ruilog.com/blog/view/b6f0e42cf705.html

konto usunięte

Temat: Ciekawy artykuł o wydajności frameworków PHP

Daniel Częstki:
http://www.ruilog.com/blog/view/b6f0e42cf705.html

Tak się zastanawiam co przyświecało twórcom ZF 2 że aż tak "poprawili" wydajność :) Nie dziwota, że wiele programistów dalej robi w ZF 1...
Daniel Częstki

Daniel Częstki senior php developer

Temat: Ciekawy artykuł o wydajności frameworków PHP

no poprawili wydajność ale w drugą stronę ;)

konto usunięte

Temat: Ciekawy artykuł o wydajności frameworków PHP

Daniel Częstki:
no poprawili wydajność ale w drugą stronę ;)

Ale aż tak?!? :) Nadszedł chyba dobry moment, żeby zainteresować się Symfony :)Piotr L. edytował(a) ten post dnia 28.02.13 o godzinie 13:48
Daniel Częstki

Daniel Częstki senior php developer

Temat: Ciekawy artykuł o wydajności frameworków PHP

Zobacz schemat z xHProf dla ZF2 - masakra ;)
Daniel Częstki

Daniel Częstki senior php developer

Temat: Ciekawy artykuł o wydajności frameworków PHP

Piotr L.:
Daniel Częstki:
no poprawili wydajność ale w drugą stronę ;)

Ale aż tak?!? :) Nadszedł chyba dobry moment, żeby zainteresować się Symfony :)

tak się starali że się postarali. ale co się martwisz przecież serwery są coraz szybszeDaniel Częstki edytował(a) ten post dnia 28.02.13 o godzinie 13:54

konto usunięte

Temat: Ciekawy artykuł o wydajności frameworków PHP

Daniel Częstki:
Piotr L.:
Daniel Częstki:
no poprawili wydajność ale w drugą stronę ;)

Ale aż tak?!? :) Nadszedł chyba dobry moment, żeby zainteresować się Symfony :)

tak się starali że się postarali. ale co się martwisz przecież serwery są coraz szybsze

pos(ta)rali :)
Daniel Częstki

Daniel Częstki senior php developer

Temat: Ciekawy artykuł o wydajności frameworków PHP

(ta) posrali - hehe

konto usunięte

Temat: Ciekawy artykuł o wydajności frameworków PHP

Nie ma świeższych testów niż sprzed roku? :P

konto usunięte

Temat: Ciekawy artykuł o wydajności frameworków PHP

Andrzej Łakomski:
Nie ma świeższych testów niż sprzed roku? :P

A co, brzydko Ci pachnie? :)

konto usunięte

Temat: Ciekawy artykuł o wydajności frameworków PHP

U mnie nie :P Artykuł tak ;)

Myślę, że twórcy wszystkich fw nie siedzieli przez rok z założonymi rękami, więc ten test jest zupełnie niemiarodajny.Andrzej Łakomski edytował(a) ten post dnia 28.02.13 o godzinie 15:05

konto usunięte

Temat: Ciekawy artykuł o wydajności frameworków PHP

Andrzej Łakomski:
U mnie nie :P Artykuł tak ;)

Myślę, że twórcy wszystkich fw nie siedzieli przez rok z założonymi rękami, więc ten test jest zupełnie niemiarodajny.

Nie wiem jak inne frameworki, ale ZF 2, nawet jeżeli go przez ten czas nieco poprawili to i tak nie będą to aż takie znaczne różnice.

konto usunięte

Temat: Ciekawy artykuł o wydajności frameworków PHP

Andrzej Łakomski:
U mnie nie :P Artykuł tak ;)

Myślę, że twórcy wszystkich fw nie siedzieli przez rok z założonymi rękami, więc ten test jest zupełnie niemiarodajny.

myślisz że zmienili totalnie architekturę w międzyczasie? jakoś w to nie wierzę

konto usunięte

Temat: Ciekawy artykuł o wydajności frameworków PHP

Może zmienić nie zmienili, ale mogli dodać cache, których w S2 jest od groma.

konto usunięte

Temat: Ciekawy artykuł o wydajności frameworków PHP

Wow, CodeIgniter nawet dobrze wypadł... Szkoda, że w zestawieniu nie ma DooPHP, o którym czytałem sporo dobrego (pod kątem lekkości/wydajności). Miał ktoś z nim do czynienia?
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Ciekawy artykuł o wydajności frameworków PHP

Ostatnio miałem przyjemność (?) robić ewaluacje zarówno Symfony2 jak i Zend2 jako dwa frameworki do użytku "enterprise".
Co do benchmarków, to jeden wynik jest dla mnie dość ciekawy: "Number to function calls"
Nie wiem czy zaglądaliście do kodu obydwu frameworków, ale imho:

1) Zend2 to nie framework bo nie narzuca żadnej struktury w przeciwieństwie do Symfony2.

2) Obiekty w Zendzie w większości przypadków posiadają pełną enkapsulacje i symetryczne api w przeciwieństwie do implementacji Symfony, polecam porównać klasy Zend/Http/Request i Symfony\Component\HttpFoundation\Request choć i w ZF2 są babole.

3) W Zend2 widać, że starają się używac Lazy Load gdzie się da, co z jednej strony zwiększa narzut na ilośc wywoływanych calli, z drugiej strony umożliwia podmiane / mockowanie dowolnej partii kodu i wyrzuca inicjalizacje kompozycji obiektu z konstruktora jak niestety ma to miejsce w Symfony2.

4) DI to imho pomyłka w obydwu przypadkach, bo po pierwsze od dawien dawna był wzorzec statycznej fabryki, a po drugie Lazy Load umożliwia wstrzykiwanie zależności tam gdzie one są faktycznie potrzebne i kiedy są potrzebne.

5) Annotacje w Symfony to dla mnie wymyślanie na siłe kolejnego języka, który musi być interpretowany runtime (!?) w technologii, która jest już wystarczająco wolna. W Javie anotacje są częścią jezyka i są sprawdzane już na etapie kompilacji, w PHP do proteza oparta o refleksje.

6) Pojemnośćiowo przyzałożeniu że goły vendor symfony składa się w ok 50% z testów to Zend2 zawiera nieco więcej kodu (o jakieś 10...20%), ale implementuje W CHOLERE więcej rzeczy Out Of The Box.

7) Ilość testów jednostkowych w Zendzie jest kilkukrotnie większa niż w Symfony co imho pozytywnie świadczy o jakości.

8) Zend2 dostarcza biblioteke Stdlib zawierającą abstrakcyjne koncepty typów i struktór danych, które są używane jako klasy bazowe w obrębie reszty kodu, co upraszcza jego stosowanie, w przeciwieństwie do Symfony2 w którego kodzie jest masa klas które realizują podobne koncepty jak chociażby wszelakie *Bag.php bez żadnej abstrakcji.

Krótko: dla mnie Zend2 wydaje się być przemyślaną biblioteką zorientowaną na większe projekty natomiast Symfony2 jest imho pisane na pałe, a historie o trzymaniu się wzorców projektowych niedokońca mają potwierdzenie w tym co znajduje się w środku przez co system jest właściwie monolitem: spróbojcie użyć kawałków symfony, zmienić koncepty lub zrobić coś non symfony way :)

Wydajność: jeżeli mówimy o typowej aplikacji internetowej w której akceptowany czas odpowiedzi jest poniżej trzech sekund to obydwa rozwiązania będą prezentowały się podobnie.

Efektywność: imho stworzenie bazowej aplikacji w Symfony2 jest dużo szybsze niż w Zendzie jednak z czasem rozrost projektu może zatrzeć różnice pomiędzy ZF2 a SF2, im bardziej customowy projekt tym większa jest walka z monolitem typu Symfony, Zend daje większą elastyczność.

Skalowalność: obydwa frameworki są ...wolne ...bardzo wolne :P
Imho tak długo jak aplikacjia to typowe MVC serwujące głównie kontent statyczny klaster Symfony2 z load balancerem i cache się sprawdzi. Im bardziej architektura aplikacji będzie odbiegała od tego co domyślne dla symfony tym więcej trzeba się narobić żeby coś zrobic.

Maintenance: po ok pół roku orki z systemem który powstał w oparciu o Symfony2, jak problem odbiega od tego co jest standardem dla aplikacji w Symfony2, to development bardziej koncentruje sie nad tym aby dany problem dostosować do symfony niż na samym rozwiązaniu problemu.

Podsumowanie: dla dużego systemu, który składa się z wielu komponentów poza samym kodem PHP renderującym html na "froncie" i ma być utrzymywany przez dłuższy czas i ze świadomością, że wymagania zmieniają się w locie, skłaniałbym się ku Zend2 ze względu na lepiej napisany kod i przedewszystkim elastyczność co do architektury, czego imho jest pozbawione Symfony2.Łukasz C. edytował(a) ten post dnia 28.02.13 o godzinie 21:35

Temat: Ciekawy artykuł o wydajności frameworków PHP

Łukasz C.:
Ostatnio miałem przyjemność (?) robić ewaluacje zarówno Symfony2 jak i Zend2 jako dwa frameworki do użytku "enterprise".
Co do benchmarków, to jeden wynik jest dla mnie dość ciekawy: "Number to function calls"
Nie wiem czy zaglądaliście do kodu obydwu frameworków, ale imho:
[ciastko]

5) Annotacje w Symfony to dla mnie wymyślanie na siłe kolejnego języka, który musi być interpretowany runtime (!?) w technologii, która jest już wystarczająco wolna. W Javie anotacje są częścią jezyka i są sprawdzane już na etapie kompilacji, w PHP do proteza oparta o refleksje.

Prawie prawda.

There are three annotation types that are predefined by the language specification itself: @Deprecated, @Override, and @SuppressWarnings.

Innymi słowy tylko te trzy typy anotacji są rozumiane przez kompilator.
Inne typy anotacji niestety ale tylko przez refleksje, które nawet w Java nie są szybkie, ani wygodne, ani bezpieczne.

Cała prawda

Anotacje rozwiązywane:
- na poziomie kompilacji (język)
- preprocesor (można napisać swój) z fizycznego pliku lub refleksje
- oznaczone @Retention(RetentionPolicy.RUNTIME) (refleksje)

[ciastko]Piotr Rusoł edytował(a) ten post dnia 28.02.13 o godzinie 21:58

konto usunięte

Temat: Ciekawy artykuł o wydajności frameworków PHP

Łukasz C.:
4) DI to imho pomyłka w obydwu przypadkach, bo po pierwsze od dawien dawna był wzorzec statycznej fabryki, a po drugie Lazy Load umożliwia wstrzykiwanie zależności tam gdzie one są faktycznie potrzebne i kiedy są potrzebne.

Rozwiń proszę, bo nie za bardzo wiem co masz na myśli.
Łukasz Mordawski

Łukasz Mordawski Programista PHP

Temat: Ciekawy artykuł o wydajności frameworków PHP

Piotr Rusoł:
Łukasz C.:
Ostatnio miałem przyjemność (?) robić ewaluacje zarówno Symfony2 jak i Zend2 jako dwa frameworki do użytku "enterprise".
Co do benchmarków, to jeden wynik jest dla mnie dość ciekawy: "Number to function calls"
Nie wiem czy zaglądaliście do kodu obydwu frameworków, ale imho:
[ciastko]

5) Annotacje w Symfony to dla mnie wymyślanie na siłe kolejnego języka, który musi być interpretowany runtime (!?) w technologii, która jest już wystarczająco wolna. W Javie anotacje są częścią jezyka i są sprawdzane już na etapie kompilacji, w PHP do proteza oparta o refleksje.

Prawie prawda.

There are three annotation types that are predefined by the language specification itself: @Deprecated, @Override, and @SuppressWarnings.

Innymi słowy tylko te trzy typy anotacji są rozumiane przez kompilator.
Inne typy anotacji niestety ale tylko przez refleksje, które nawet w Java nie są szybkie, ani wygodne, ani bezpieczne.

Cała prawda

Anotacje rozwiązywane:
- na poziomie kompilacji (język)
- preprocesor (można napisać swój) z fizycznego pliku lub refleksje
- oznaczone @Retention(RetentionPolicy.RUNTIME) (refleksje)

Ponadto, adnotacje w Symfony są interpretowane na bieżąco tylko w środowisku dev, a na produkcji są z tego co wiem cache'owane.
Piotr Jasiulewicz

Piotr Jasiulewicz PHP/Java
professional

Temat: Ciekawy artykuł o wydajności frameworków PHP

Artykul ciekawy, ktos sie niezle napracowal (to fakt, a po tym fakcie, wszystko jest IMHO). Niemniej jednak przestrzegalbym przed wyborem frameworka, tylko pod wzgledem wydajnosci, jako, ze tak napawde takie statystyki niewiele znacza .

Warto pamietac, ze czas CPU jest niewyobrazalnie tani, w porownaniu z czasem developera, tak wiec bralbym pod uwage, nie to, jak dany framework radzi sobie w laboratorium:

- czy team chce z danym frameworkim pracowac - wiekszosc dzisiejszych rozwiazan narzuca duzo wlasnego stylu, co ma znaczny wplyw na to jak rozwinie nam sie team, albo beda jechac singletonami, albo zrozumieja jak dzielic soft na reuzywalne pakiety - framework albo pomoze, albo chociaz nie zaszkodzi. Entuzjazm wzgledem danej technologii znacznie (przez duze Z) zwieksza wydajnosc zespolu.

- czy team umie w tym pracowac? Jeden plik kodu to wiecej niz 100 stron API docsa ;) a jeden ekspert od jakiegos frameworka, ktory potrafi nauczyc innych, moze znaczyc ze wlasnie to musimy wybrac, inaczej rozyko i bufory wytworzenia ida w kosmos bo malo kto wie co robi (przynajmniej przez jakis czas)

- jak latwo jest zatrudnic kogos kto zna dane rozwiazanie? Czy damy rade zweryfikowac, czy ta osoba faktycznie umie to co mowi, ze umie (certyfikat?)

- czy za rok bedzie mozna pograc nowa wersje? czy bedzie trzeba wszystko przeorac - wybierajac stosunkowo mlode rozwiazania, narazamy siebie (i klietnow) na duzo problemow zwiazanych z cyklem zycia produktu. Aplikacje webowe maja znacznie dluzsze cykle niz programy dostarczane w pakietach. Moze nam sie uda trafic na perle, ktora daleko zajdzie (przypomina mi sie uzywanie Doctrine 2 lata temu), a moze trafimy w zaulem nierozwijanego rozwiazania, efektywnie przezucacjac duzo developmentu ze spolecznosci na team.

- a finalnie i najwazniejsze IMHE - jak szybko jestesmy w stanie dostarczyc dzialajacy prototyp, a potem dzialajaca, przetesowana aplikacje (chodzi o to aby zapewnic kontraktowa jakosc) do klienta (nie wazne czy zewnetrznego, czy wewnetrznego)

Następna dyskusja:

Narzędzia do PHP




Wyślij zaproszenie do