![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 566 Pomógł: 35 Dołączył: 21.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witjacie!
Mam nietypowe pytanie - ile wynosi granica przyzwoitości dla renderowania jednej podstrony która jest nazwijmy to statyczna? Tzn. używa szablonów i pobiera dane z MySQL`a (bez czytników rss i innych bajerów). Pytam ponieważ piszę system szablonów (a właściwie skończyłem) i wygenerowanie podstrony na podstawie pliku .tpl który posiada kilka powiązań z innymi plikami zajmuje ok. 7-10ms. Jestem paranoikiem jeśli chodzi o wydajność i sam system tplek ma swój wewnętrzny cache (coby jednego newsa nie pobierać 2x chcąc mieć go w json oraz w html) ale zastanawiam się czy dodatkowo nie pooptymalizować kodu bardziej. -------------------- flexiCMS v2 [|||||||+--] 75% done
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 24 Dołączył: 30.03.2009 Skąd: Rokitno Szlacheckie Ostrzeżenie: (0%) ![]() ![]() |
powyżej 1s to już bardzo długo (po 4 wg. jakichś badań jest tuże prawdopodobieństwo że user sie wnerwi i opuści stronę)
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 566 Pomógł: 35 Dołączył: 21.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Czyli bezpiecznie do 0.5sec można się bawić jak dobrze rozumiem?
Są gdzieś wyniki takowych badań? -------------------- flexiCMS v2 [|||||||+--] 75% done
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 207 Pomógł: 44 Dołączył: 18.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Porównaj czas generacji strony z innym systemem szablonów. Projekt rozwijany już przez jakiś czas z pewnością jest zoptymizowany. Tak więc porównując czasy przetwarzania podobnego materiału jesteś w stanie zobaczyć jak długo to trwa. Przynajmniej ja tak robię
![]() |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
To, że u Ciebie się generuje 7-10ms, nic nikomu nie mówi odnośnie wydajności, ponieważ uzyskiwane czasy zależą od komputera, na którym się to uruchamia i od konfiguracji PHP. Jeśli na serwerze produkcyjnym strona będzie się wykonywać powyżej 0,1 sekundy, to już jest nienajlepiej moim zdaniem.
-------------------- Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 566 Pomógł: 35 Dołączył: 21.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
To, że u Ciebie się generuje 7-10ms, nic nikomu nie mówi odnośnie wydajności, ponieważ uzyskiwane czasy zależą od komputera, na którym się to uruchamia i od konfiguracji PHP. Jeśli na serwerze produkcyjnym strona będzie się wykonywać powyżej 0,1 sekundy, to już jest nienajlepiej moim zdaniem. Może źle się wyraziłem ![]() Chodziło mi o ogólną wydajność do jakiego czasu można uznać wynik za dobry. Wiem, że przy pierwszej wersji nie osiągnę zaskakującego wyniku ale staram się unikać np. zbyt dużej ilości zapytań do SQL`a czy wykonywania regexa w pętlach. -------------------- flexiCMS v2 [|||||||+--] 75% done
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 1 Dołączył: 13.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
A czy przy testowaniu czasu wykonania wymuszasz na bazie danych, żeby nie cache-owała wyników zapytań?
Dla MySQL używa się:
Ew. przyspieszyć możesz sam proces ładowania plików z dysku (które pewnie i tak są cache-owane, ale kit z tym) poprzez usunięcie komentarzy z plików PHP, ale to raczej ostateczność, choć dla paranoika niekoniecznie ![]() |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 566 Pomógł: 35 Dołączył: 21.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Tak oczywiście, że wyłączam cache do testów
![]() Co do usuwania komentarzy to nie ma sensu - i tak na większości serwerów działa eAccelerator. Zastanawiam, się czy ma sens własne cachowanie jeśli skrypt wykryje, że nie używamy sqlite (używam PDO). Tzn obecnie mam to wykonane tak, że w ramach jednej instancji klasy jest robiony w pamięci cache i przed każdym zapytaniem sprawdzane jest czy aby dana strona/news nie był już "wybierany" z bazy, jeśli tak to jest wypluwany z cache. Teraz rodzi się pytanie - czy warto dodatkowo cachować to na dysku powiedzmy w folderze /cache/raw/ ze strukturą powiedzmy /cache/raw/news/id.dat. Wtedy jednak przy zmianie newsa trzeba sprawdzać czy istnieje jako cache i go ew. usuwać. Nie wiem czy to ma sens bo przecież jakoś trzeba kodować dane do pliku a później je parsować (najprościej chyba użyć do konwersji tablica>plik plik>tablica json_encode/decode) co zajmuje chwilę. Myślałem nad cachowaniem całych podstron z wygenerowanym już htmlem jednakże wpadł mi nieprzewidziany problem - strona każdego zalogowanego użytkownika wygląda inaczej. Mogę oczywiście przyjąć założenie, że buforuje tylko strony dla niezalogowanych jednakże to trochę mijanie się z problemem. Znalazłem też ciekawe porównanie: ![]() Czyli sprawdzenie się starej zasady - prosty i ładny wyglądający kod ma mało wspólnego z wydajnością. (Więcej na http://phpbench.com/) Ten post edytował kiler129 18.10.2010, 23:00:40 -------------------- flexiCMS v2 [|||||||+--] 75% done
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 1 Dołączył: 13.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Gdzieś kiedyś widziałem podobne porównanie.
Co do tego while list each - to chyba działa ciut inaczej w niektórych sytuacjach, nie sprawdzałem ale Tobie radzę. Cytat Mogę oczywiście przyjąć założenie, że buforuje tylko strony dla niezalogowanych jednakże to trochę mijanie się z problemem. A wg mnie lepiej tak przyjąć. Tworząc cache osobno dla zalogowanych tak na prawdę tworzysz ich 2x więcej (po 1 dla zalogowanych i niezalogowanych) czyli powodujesz niepotrzebny narzut czasowy - na zarządzanie tymi plikami. Lepiej jak zaimplementujesz w swoim systemie szablonów bajer polegający na zamianie pewnych danych znajdujących się w wyciągniętych z cache plików na dane odpowiadające zalogowanemu (lub nie) użytkownikowi. Nasuwa mi się pytanie - po co Ci system szablonów polegający na ręcznym parsowaniu plików? Nie wystarczy Ci prosty mechanizm parsowania przez interpreter PHP plików *.tpl.php, jedną bardzo małą funkcją? W takim pliku możesz sobie mieszać HTML z PHP i w dodatku działa to znacznie szybciej. Główną wadą jest niestety to, że takich szablonów nie podeślesz przecież użytkownikom do edycji. Ale to już zależy co tworzysz ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 08:07 |