Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Względność czasu wykonywania, ... czyli ile to dużo a ile mało? :)
kiler129
post
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
Go to the top of the page
+Quote Post
hind
post
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ę)
Go to the top of the page
+Quote Post
kiler129
post
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
Go to the top of the page
+Quote Post
maniana
post
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ę smile.gif
Go to the top of the page
+Quote Post
Zyx
post
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
Go to the top of the page
+Quote Post
kiler129
post
Post #6





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


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.


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
Walian
post
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ę:
  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
Go to the top of the page
+Quote Post
kiler129
post
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 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/)

Ten post edytował kiler129 18.10.2010, 23:00:40


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
Walian
post
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 smile.gif
Go to the top of the page
+Quote Post

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 Aktualny czas: 20.08.2025 - 08:07