Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Względność czasu wykonywania
Forum PHP.pl > Forum > PHP
kiler129
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.
hind
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ę)
kiler129
Czyli bezpiecznie do 0.5sec można się bawić jak dobrze rozumiem?
Są gdzieś wyniki takowych badań?
maniana
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ę smile.gif
Zyx
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.
kiler129
Cytat(Zyx @ 18.10.2010, 09:40:32 ) *
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 winksmiley.jpg
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.
Walian
A czy przy testowaniu czasu wykonania wymuszasz na bazie danych, żeby nie cache-owała wyników zapytań?
Dla MySQL używa się:
  1. SELECT SQL_NO_CACHE ...


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 smile.gif
kiler129
Tak oczywiście, że wyłączam cache do testów winksmiley.jpg
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/)
Walian
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 smile.gif
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.