![]() |
![]() ![]() |
![]() |
![]()
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 |
|
|
![]()
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
![]() -------------------- |
|
|
![]()
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 ![]() 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. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 8 Dołączył: 20.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() 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. |
|
|
![]()
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
![]() -------------------- |
|
|
![]()
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". |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 8 Dołączył: 20.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
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ść. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 8 Dołączył: 20.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#10
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
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 ![]() 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. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 8 Dołączył: 20.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() 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. |
|
|
![]()
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
![]() |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 8 Dołączył: 20.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() Właśnie na to samo patrzyłem ![]() 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 |
|
|
![]()
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.
-------------------- |
|
|
![]()
Post
#17
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() Choć fakt DQL jest fajny, choć ja nie mogę z nim pracować. Za bardzo porównuje do HQL'a. |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 418 Pomógł: 8 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Propel w wersji 1.3 też nastawia sięmocno na fluent interface i też mozna psiać w jednej linii ![]() Tym samym Propel zbliża się do Hibernate-a. ![]() -------------------- |
|
|
![]()
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 |
|
|
![]()
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..
-------------------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 09:25 |