Orzeszekk
23.12.2011, 04:14:21
Mam pytanie do osób które używają i dobrze znają ten framework.
Fabien reklamował się że ten fw ma być 3x szybszy od zenda i 2x od starego symfony. Na starcie nas prosi o włączenie APC, co zrobiłem.
Kiedy w końcu udało mi się odpalić app.php (nie wiedzieć czemu przekierowywało mnie z app.php do app_dev.php) to okazało się że wcale nie jest taki szybki. wygenerowanie strony hello world (Bez zadnego formatowania, zadnej zmiennej w template, wpisany na sztywno html) zajeło fw 300 ms.
dla porownania kompletna strona napisana z uzyciem autorskiego frameworka ktory po za tym ze nie ma generatorow kodu, DI, oraz zamiast uzywac templatów w szablonach uzywa obiektow ktore generuja pojedyncze znaczniki html (co juz na wstepie powinno go zamulić jak świnię) duzo sie nie rozni, ładuje (kompletny, gotową stronę, + laczy sie z db i loguje uzytkownika) index w 100 ms.
i gdzie ta szybkosc? mialem zainwestowac swoj czas w to narzędzie bo duze mozliwosci, mial byc szybki ale ten wynik mnie mocno zaniepokoił.. skoro zwykła pusta strona generuje sie 300ms, to co gdy przyjdzie do tego uzycie bazy danych, weryfikacja userów, oraz template skladajacy sie z 40 mniejszych? +1s?
wiadomo ze na serwerze bedzie to szybciej dzialalo ale na serwerze bedzie to atakowac nie jedna osoba a mnóstwo..
Po wyłączeniu APC to juz w ogole zaczyna szaleć.. a na hostingu dzielonym jak sie okazuje czasami admini nie chcą go instalować..
moze mam cos niepowłączane tak jak trzeba? w app.php zakomenotwane linie odkomentowałem, bez tego w ogole cache nie chciał się wygenerować. Zamiana loadera na apcLoader rowniez duzo nie dala (moze z 30ms ~)
lobopol
23.12.2011, 06:48:31
app_dev.php to środowisko developerskie, w nim wszystko jest generowane od 0, w środowisku produkcyjnym wszystko jest przerabiane na pliki php i zapisywane w folderze cache. Działa to sporo szybciej, bo 2 i kolejne uruchomienir danej strony w środowisku produkcyjnym leci już z cache.
Orzeszekk
23.12.2011, 11:15:00
Oczywiscie ten wynik 300ms to app.php srodowisko produkcyjne, z włączonym cachowaniem APC oraz włączonym cachowaniem w apc sciezek do klas. I oczywiscie to jest wynik ktorys z kolei, bo pierwsze odswieznenie , to z generowaniem cache trwa ok 1500-3000ms
W app_dev.php zwykłe odświeżenie strony to ok 600-700ms, a pierwsze odświeżenie - ok 1500ms
wookieb
23.12.2011, 11:17:10
Sprawdzasz na windowsie?
Orzeszekk
23.12.2011, 11:22:25
Tak, na windowsie.
Nie wiem jak mam interpretowac ten wynik, czy to jest strona + 300ms od symfony (i jak strona bedzie rozbudowana to bedzie to 300ms od strony i 300ms od symfony), czy to jest strona*3 (strona by sie normalnie generowala 300ms = 900 ms pod symfony)
mam dostep do serwera linuxowego na hostingu ale tam typ nie chce zainstalowac apc bo mowi ze cos mu sie porozwala z uzytkownikami, ani memcache ani nic. Jest tylko zend optimizer ktory chyba nie dziala tak jak apc. wiec wynik bedzie jeszcze bardziej na niekorzysc sf.
a narzędzie sf2 mi sie bardzo podoba, super pomysl z oddzieleniem frameworka, aplikacji, i bundla w ktorym pracujemy, z mojej perspektywy wyglada on jak moj framework (po dodaniu bundla do favorites w nb widze tylko kontrolery, "moj" routing widoki i scheme bazy danych) więc jest naprawde fajnie przemyslany, no ale jak ma byc krową to sorry
wookieb
23.12.2011, 11:26:22
APC na windowsie praktycznie nie działa jeżeli chodzi o wzrost prędkości działania. Testuj na linuchu.
Orzeszekk
23.12.2011, 11:39:29
przyspiesza o 100% na windowsie. Cos co pod sf generowalo sie 600-700 ms generuje sie 300. Cos co generowalo sie 200ms (moje) generuje sie 100.
wrzuca sie na linux.. juz z 15 minut. kiedys sie wrzuci i sie przetestuje.
by_ikar
23.12.2011, 11:39:33
Na windowsie będzie ci chodzić wolniej, i to nawet koło 40% wolniej. Windows przedewszystkim jest wolniejszy od linuxów/unixów dlatego że ścieżkę do jednego pliku możesz zapisać na kilka sposobów, np z małej litery, z dużej litery itp w efekcie czego powstaje kilka różnych ścieżek (wielkość liter) i każda z tych ścieżek jest sprawdzana. Odwołań do dysku jest znacznie więcej.. Mój skromny FW na windowsie generuje się w około 300ms, a na unixie (centos), już gotowa cała strona generuje się w średnio 100-150ms. A do tego dochodzą jeszcze inne rzeczy, w efekcie czego na windowsie skrypty w php chodzą nawet o połowę wolniej niż na linuxie/unixie.
Orzeszekk
23.12.2011, 12:10:12
Dzis jest jakis zly dzien bo wszystko wolno chodzi ale nadal relacja kształtuje sie ok 500 ms ~ dla pustej strony w symfony oraz 250ms~ dla mojej kompletnej :/ na serwerze wyłączone jest APC, ale jest zend optimizer.
by_ikar
23.12.2011, 14:15:13
No wiesz, tak czy inaczej demonem szybkości nie będzie, dlatego że ty w swoim FW masz podstawowe rzeczy, a tutaj masz tego wszystkiego dostępnego trochę więcej. Tych obiektów za pewne jest więcej, tych plików które muszą zostać dołączone, już nie mówiąc o konfiguracji która jest dość mocno rozbita i można wiele rzeczy skonfigurować, efektem czego masz do wczytania jeszcze kolejne kilka plików. suma sumarum i wychodzi ci trochę więcej niż twój FW. Już nie mówię o tym że masz jeszcze uruchomionego ORM'a, a w swoim FW zapewne ORM'a nie używasz z racji na wydajność, aby twój FW był szybszy. Nie patrz tylko na czas generowania, zajrzyj ile pamięci zjada, i zjada bankowo mniej niż twój FW

Do prostych firmowych stronek, taki FW jak symfony IMO średnio się nadaje, znaczy zrobić stronę zrobisz, nawet dość sprawnie i szybko ją zrobisz, bo ile to jest wygenerować jeden-dwa modele, dołożyć do tego jeden-dwa kontrolery (bo ile firmowa strona może mieć podstron?). Zrobić zrobisz, ale czy to ma sens? Dla niektórych tak, bo wszystko robią w jednym FW, bez względu na to czy to duży czy mały projekt. Ale są tacy, np jak ja, którzy mają swojego takiego małego FW, właśnie do takich małych, nieszczególnie skomplikowanych projektów.
Orzeszekk
23.12.2011, 18:40:33
moj fw uzywa orm-a

uzycia pamieci nie sprawdzalem

moze wyprobuje jeszcze ten mini framework symfony2
adibak20
23.12.2011, 21:13:10
U mnie zajęło na win7 wygenerowanie strony typu "hello word" 119 sekund na Symfony 2 ver 2.0.4
pejott
23.12.2011, 21:13:39
Wszyscy już wiemy, że Twój framework to demon szybkości, który daje prawie takie możliwości jak Symfony. A teraz pokaż kodzik to pogadamy dalej.

A tak na poważnie, dziwne wyniki otrzymujesz, ja przy włączonym debug mam te 300
ms na laptopie, przy aplikacji na prawie 40 bundli...
Sprawdź konfigurację bo może coś nagrzebałeś i mimo że nie masz toolbara to jednak leci z debugowaniem.
Poza tym żaden framework nie jest narzędziem do tworzenia "hello world" i benchmarkowanie ich na tym jest prawie zawsze bez sensu.
Przy dużo bardziej skomplikowanych aplikacjach, Symfony2 jest naprawdę szybki.
Nie śmiałbym np. krytykować wydajności ZF albo nawet ZF2 bo nie zrobiłem na nich nic większego.
Zaryzykuj i popracuj z
Symfony2, nie będziesz żałował.
Pozdrawiam.
Orzeszekk
23.12.2011, 21:45:28
nie chodzilo o to zeby sie pochwalic swoim bo nie ma sie czym chwalic chodzilo o to zeby dojsc gdzie ta predkosc

mam uraz do wlasnych frameworkow i chcialem sie przerzucic na cos gotowego tylko chcialem zeby to dzialalo szybko

bundli jest 10, standard edition. jak napisze zlozona aplikacje i okaze sie mułem to juz bedzie za pozno zeby sie z tego wycofac.
uupah5
23.12.2011, 23:14:45
Cytat(Orzeszekk @ 23.12.2011, 21:45:28 )

nie chodzilo o to zeby sie pochwalic swoim bo nie ma sie czym chwalic chodzilo o to zeby dojsc gdzie ta predkosc

mam uraz do wlasnych frameworkow i chcialem sie przerzucic na cos gotowego tylko chcialem zeby to dzialalo szybko

bundli jest 10, standard edition. jak napisze zlozona aplikacje i okaze sie mułem to juz bedzie za pozno zeby sie z tego wycofac.
IMHO patrzysz na to od złej strony. przy złożonej aplikacji raczej niewielkie szanse są na to, że narzut interpretera php (+fm) będzie wąskim gardłem. szybciej odezwą się problemy z bazą danych. prawdopodobnie i tak większość contentu będzie cacheowane, to wtedy te 300ms nie będzie miało większego znaczenia. a ważniejsze może mieć możliwość zmiany/rozbudowy tej aplikacji. solidny fm daje Ci tu na start duże fory.
no i jak to mówią starzy górale: optymalizuj wtedy, gdy masz problem.
Orzeszekk
23.12.2011, 23:18:46
Cytat(uupah5 @ 23.12.2011, 23:14:45 )

IMHO patrzysz na to od złej strony. przy złożonej aplikacji raczej niewielkie szanse są na to, że narzut interpretera php (+fm) będzie wąskim gardłem. szybciej odezwą się problemy z bazą danych. prawdopodobnie i tak większość contentu będzie cacheowane, to wtedy te 300ms nie będzie miało większego znaczenia. a ważniejsze może mieć możliwość zmiany/rozbudowy tej aplikacji. solidny fm daje Ci tu na start duże fory.
no i jak to mówią starzy górale: optymalizuj wtedy, gdy masz problem.
super

no to znalazlem narzędzie dla siebie
wookieb
23.12.2011, 23:20:08
Poczytaj o ESI Caching w symfony a przy większej aplikacji zrozumiesz, że naprawdę nie ma sensu zwracać aż tak bardzo uwagi na samo php.
Orzeszekk
24.12.2011, 00:31:12
sprytne

bardzo ciekawe

dzieki za wskazówke
I taka prawda - Hello World będzie się generował 300 ms ale i o wiele większa aplikacja też będzie się generowała 300 ms.

(aktualnie robimy w firmie jakąś tam "sporą" aplikację która >przed chwilą patrzyłem< uzyskuje czasy 280ms. - odpalane na laptopie, win7, więc maszyna demonem prędkości nie jest

)
Więc o te czasy tak bardzo się nie martw

S2 używa chociażby DailyMotion, więc to też o czymś świadczy ;p
Orzeszekk
28.12.2011, 16:22:29
wychodzi na to ze symfony ma złozonosc obliczeniowa O(1)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.