Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [Symfony]Symfony a duże projekty, wydajność
athabus
post 1.12.2008, 16:52:30
Post #1





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Witam,

mam pytanie czy macie jakieś obserwacje dotyczące wydajności symfony w dużych projektach. Konkretnie nurtuje mnie czy rozległość "w poziome" portalu wpływa znacząco na wydajność. Czyli przykładowo jeden projekt symfony obsługuje np. wortal + sklep + forum + katalog.
Wiadomo w takich przypadkach przyrasta klas, reguł w konfiguracji itp. Pytanie czy to znacząco negatywnie wpływa na wydajność. Nie mam jeszcze nic na czym mógłbym to porównać, więc chciałbym poznać wasze opinie/doświadczenia.

Żeby doprecyzować chodzi mi tu o to, że portal (a co za tym idzie pojedynczy request) nie tyle jest skomplikowany co rozległy.

Ten post edytował athabus 1.12.2008, 16:52:58
Go to the top of the page
+Quote Post
Riklaunim
post 1.12.2008, 17:01:44
Post #2





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

Ostrzeżenie: (0%)
-----


Jeżeli poprawnie zaprojektujesz strukturę (baza, kod) to problemów nie będzie smile.gif


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
Cysiaczek
post 1.12.2008, 17:04:53
Post #3





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




W pewnym niewielkim stopniu tak, spada wydajność. Ja doszedłem w pewnym momencie to 10 MB konsumpcji pamięci, bo klasy propela mają nieprzyjemny zwyczaj rozrastania się za każdym razem, gdy skorzystamy z klucza obcego w innej tabeli. Tym samym np. klasa sfGuardUserProfile ma u mnie obecnie coś w okolicach 90KB i ~4000 lini kodu (z komentarzami), a jako że jest stosowana przez większość modułów, obniża wydajność w całkiem znaczący sposób. Co do konfiguracji, to nie widzę jakiegoś dużego problemu. Ile możesz mieć wpisów? 500? 600? Wątpię trochę.

Wystarczy jednak jakiś akcelerator, usunięcie komentarzy z modeli, "spakowanie" jądra Symfony i mamy timingi niziutkie i zużycie pamięcie na poziomie 2 MB smile.gif

Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
michalg
post 1.12.2008, 17:56:36
Post #4





Grupa: Zarejestrowani
Postów: 122
Pomógł: 8
Dołączył: 20.10.2008

Ostrzeżenie: (0%)
-----


Cytat(Cysiaczek @ 1.12.2008, 17:04:53 ) *
Wystarczy jednak jakiś akcelerator, usunięcie komentarzy z modeli, "spakowanie" jądra Symfony i mamy timingi niziutkie i zużycie pamięcie na poziomie 2 MB smile.gif


Czego używasz do "pakowania"? A czy przy akceleratorze jest sens usuwać komentarze z plików php? Bo przecież akcelerator przechowuje "skompilowaną" wersję skryptu, która nie zawiera formatowania/komentarzy. Przynajmiej tak mi się wydaje.
Go to the top of the page
+Quote Post
Riklaunim
post 1.12.2008, 19:41:39
Post #5





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

Ostrzeżenie: (0%)
-----


10 MB RAM? Nietrudno znaleźć CMSa, który po instalacji ciągnie kilkanaście i więcej na stronie głównej winksmiley.jpg


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
athabus
post 1.12.2008, 20:42:48
Post #6





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Nie ukrywam, że właśnie propel budzi moje największe obawy - czasami klasy są tak przepakowane zbędnymi funkcjami, że aż strach ich używać...
BTW - zaciekawiłem się twoim stwierdzenim o akceleratorze - na swoim laptopie nie miałem zainstalowanego. Postawiłem sobie APC i zużycie pamięci spadło z 12M na 3,5M... Całkiem nieźle spodziewałem się spadku w granicach 40%.

Ciekawi mnie też co rozumiesz przez "spakowanie jądra", bo właśnie szukam takich "przyspieszaczy".
Go to the top of the page
+Quote Post
michalg
post 1.12.2008, 21:03:59
Post #7





Grupa: Zarejestrowani
Postów: 122
Pomógł: 8
Dołączył: 20.10.2008

Ostrzeżenie: (0%)
-----


Cytat(athabus @ 1.12.2008, 20:42:48 ) *
Nie ukrywam, że właśnie propel budzi moje największe obawy - czasami klasy są tak przepakowane zbędnymi funkcjami, że aż strach ich używać...


Więc może doctrine? Tam klasy są tak proste, że nawet można je samemu pisać z palca.
Go to the top of the page
+Quote Post
athabus
post 1.12.2008, 21:18:50
Post #8





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Przymierzam się, acz poza wydajnością propel spełnia wszystkie moje oczekiwania. Z tego co wiem (bardziej ze słyszenia niż praktyki) to jednak doctrine jest uboższe. Dlatego najpierw przyjrzę się nowej wersji propela, która korzysta z PDO a potem doctrine jeśli czas pozwoli. Do doctrine się przymierzam bo pewnie jest znacznie bardziej wydajne niż propel.

Tymniemniej w tej chwili kończę projekt, które bazuje na propelu i to już się raczej nie zmieni bo zbyt wiele zachodu kosztowałoby przepisanie tego wszystkiego. Raczej będę próbował tutaj uzyskać jak najwyższą wydajność.
Go to the top of the page
+Quote Post
michalg
post 1.12.2008, 21:25:32
Post #9





Grupa: Zarejestrowani
Postów: 122
Pomógł: 8
Dołączył: 20.10.2008

Ostrzeżenie: (0%)
-----


Cytat(athabus @ 1.12.2008, 21:18:50 ) *
Z tego co wiem (bardziej ze słyszenia niż praktyki) to jednak doctrine jest uboższe.


Mi się z kolei wydaje, że doctrine ma dużo większe możliwości. Choć nie znam na tyle ani jednego, ani drugiego rozwiązania, żeby móc to stwierdzić z pewnością. Być może to moje przeświadczenie wynika z tego, że doctrine ma dużo bardziej rozbudowaną dokumentacje, która opisuje jego możliwości. W propelu wygląda to dosyć słabo niestety.
Go to the top of the page
+Quote Post
mike
post 1.12.2008, 21:30:11
Post #10





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Cytat(michalg @ 1.12.2008, 21:25:32 ) *
Mi się z kolei wydaje, że doctrine ma dużo większe możliwości. Choć nie znam na tyle ani jednego, ani drugiego rozwiązania, żeby móc to stwierdzić z pewnością.
LOL
"Niestety nie znam się na tym ale mi się wydaje ..." - blablabla
Jeśli chodzi o porównanie Propela z Doctrinem to możliwości są podobne z choć ze wskazaniem na Propela jako bardziej funkcjonalny ORM.
W kwestii szybkości jest już bardziej jednoznacznie. Doctrine jest szybszy. Od Propela w wersji 1.2 natomiast Propel 1.3 bije na głowę Doctine'a. Co przy podobnych możliwościach dyskwalifikuje Doctrine'a.
Go to the top of the page
+Quote Post
Cysiaczek
post 1.12.2008, 21:35:30
Post #11





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




http://www.symfony-project.org/book/1_0/18-Performance
Pod koniec tekstu od śródtytułu "Core Compilation" - tam jest o pakowaniu jadra, jak i dopakowywaniu swoich klas smile.gif

Pozdrawiam


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
michalg
post 1.12.2008, 21:42:27
Post #12





Grupa: Zarejestrowani
Postów: 122
Pomógł: 8
Dołączył: 20.10.2008

Ostrzeżenie: (0%)
-----


Cytat(mike @ 1.12.2008, 21:30:11 ) *
LOL
"Niestety nie znam się na tym ale mi się wydaje ..." - blablabla


Proponuję przeczytać dokładnie i ze zrozumieniem to, co napisałem, a nie przypisywać mi stwierdzień, których nie użyłem.

Cytat
Jeśli chodzi o porównanie Propela z Doctrinem to możliwości są podobne z choć ze wskazaniem na Propela jako bardziej funkcjonalny ORM.
W kwestii szybkości jest już bardziej jednoznacznie. Doctrine jest szybszy. Od Propela w wersji 1.2 natomiast Propel 1.3 bije na głowę Doctine'a. Co przy podobnych możliwościach dyskwalifikuje Doctrine'a.


Możesz rozwinąć swoją wypowiedź? Co ma propel bardziej funkcjonalnego? I na jakiej podstawie twierdzisz, że propel 1.3 bije na głowę doctrina pod względem wydajności?

Edit:

Przykład, czego brakuje w propelu to możliwości złączenia jednej tabeli wiele razy (po różnych kolumnach) do innej, tej samej tabeli. W doctrinie jest to możliwe dzięki aliasom w dqlu. Natomiast w propelu ma to być dopiero zaimplementowane w wersji 2.0, co pewnie szybko nie nastąpi sądząc po częstotliwości commitów do repozytorium w ostatnim czasie.

Ten post edytował michalg 1.12.2008, 22:02:14
Go to the top of the page
+Quote Post
athabus
post 1.12.2008, 22:02:18
Post #13





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat(Cysiaczek @ 1.12.2008, 21:35:30 ) *
http://www.symfony-project.org/book/1_0/18-Performance
Pod koniec tekstu od śródtytułu "Core Compilation" - tam jest o pakowaniu jadra, jak i dopakowywaniu swoich klas smile.gif

Pozdrawiam


Stupid me... Jakoś już chyba zatraciłem umiejętność czytania ze zrozumieniem - nie dalej jak 2 tygodnie temu czytałem ten rozdział... Dzięki wielkie, muszę przejrzeć mój projekt i na pewno wyłowię kilka problematycznych klas.
Go to the top of the page
+Quote Post
kwiateusz
post 1.12.2008, 22:04:24
Post #14


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




co do predkosci ormow np http://phplightorm.wiki.sourceforge.net/Li...trine+benchmark wystarczy pogooglac troche, widziałem rownież kiedy test propela 1.2 1.3 (beta) i doctrine, ale znaleźć nie moge. Po krotce był ow nim że propel 1.2 wypadał b. biednie, 1.3 super, a doctrine pośrodku smile.gif
Go to the top of the page
+Quote Post
michalg
post 1.12.2008, 22:18:29
Post #15





Grupa: Zarejestrowani
Postów: 122
Pomógł: 8
Dołączył: 20.10.2008

Ostrzeżenie: (0%)
-----


Cytat(kwiateusz @ 1.12.2008, 22:04:24 ) *
co do predkosci ormow np http://phplightorm.wiki.sourceforge.net/Li...trine+benchmark wystarczy pogooglac troche, widziałem rownież kiedy test propela 1.2 1.3 (beta) i doctrine, ale znaleźć nie moge. Po krotce był ow nim że propel 1.2 wypadał b. biednie, 1.3 super, a doctrine pośrodku smile.gif


Właśnie na to samo patrzyłem smile.gif Faktycznie, widać, że doctrine ma większy narzut niż propel. Chociaż porównują wersję doctrine 0.10.2, a od tego czasu trochę więcej wersji się pojawiło.

Ale czy taki test syntetyczny jest miarodajny? Przy prostych operacjach może propel jest faktycznie szybszy, ale nie wiadomo, jakby to wyglądało przy bardziej skomplikowanych selectach, z wieloma joinami, rozbudowanymi warunkami (gdzie proces budowania sqla i wydobywania danych do obiektów jest bardziej skomplikowany).

Również przy insertach do tabel z triggerami, dużą liczbą indeksów przewaga propela może już nie być taka zauważalna, bo wąskim gardłem może stać się baza danych.

Ten post edytował michalg 1.12.2008, 23:07:17
Go to the top of the page
+Quote Post
qqrq
post 2.12.2008, 08:23:06
Post #16





Grupa: Zarejestrowani
Postów: 418
Pomógł: 8
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Skoro temat już poszedł w stronę porównywania ORM-ów, to powiem od siebie, że używałem i Propela i Doctrine i ten drugi wydał mi się o wiele bardziej przystępny. Najkrócej rzecz ujmując - to co przy pomocy obiektu Criteria w Propelu robimy w n liniach w Doctrine robimy DQL-em w jednej linii.


--------------------
Go to the top of the page
+Quote Post
mike
post 2.12.2008, 10:02:49
Post #17





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Cytat(qqrq @ 2.12.2008, 08:23:06 ) *
Najkrócej rzecz ujmując - to co przy pomocy obiektu Criteria w Propelu robimy w n liniach w Doctrine robimy DQL-em w jednej linii.
Propel w wersji 1.3 też nastawia sięmocno na fluent interface i też mozna psiać w jednej linii tongue.gif za pomocą Criteria.
Choć fakt DQL jest fajny, choć ja nie mogę z nim pracować. Za bardzo porównuje do HQL'a.
Go to the top of the page
+Quote Post
qqrq
post 4.12.2008, 08:48:39
Post #18





Grupa: Zarejestrowani
Postów: 418
Pomógł: 8
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Cytat(mike @ 2.12.2008, 10:02:49 ) *
Propel w wersji 1.3 też nastawia sięmocno na fluent interface i też mozna psiać w jednej linii tongue.gif za pomocą Criteria.


Tym samym Propel zbliża się do Hibernate-a. tongue.gif I dobrze - oby było wygodniej.


--------------------
Go to the top of the page
+Quote Post
stachuf11
post 7.12.2008, 19:56:06
Post #19





Grupa: Zarejestrowani
Postów: 154
Pomógł: 1
Dołączył: 24.04.2006

Ostrzeżenie: (0%)
-----


czy ktos może pokazać jakiś duży projekt w symfony, gdzie w bazie jest okolo 50- 100 tabel, i jak to szybko chodzi, ja probowałem cos zrobić gdzie ilośc tabel w bazie około 100, i niestety to bardzo wolno chodzi, na symfony 1.0

http://www.cmsynazamowienie.pl/katalogmedyczny/web/front.php
czasami chodzi szybciej bo cache ustawiony, ale docelowo tak byc nie może,

przy okazji symfony 1.2 chyba znacznie szybciej bedzie chodziło niz 1.0 chociażby ze względu na propela 1.3, czy tak?
pozdrawiam
Go to the top of the page
+Quote Post
c3zi
post 7.12.2008, 20:28:46
Post #20





Grupa: Zarejestrowani
Postów: 266
Pomógł: 20
Dołączył: 15.11.2006
Skąd: Koszalin

Ostrzeżenie: (0%)
-----


Z tego co wiem to Pytamy.pl zrobione jest w symfony (jesli nie zmienieli tego). Jednak 50 tabel to zapewne tam nie ma..


--------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 09:25