![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 566 Pomógł: 35 Dołączył: 21.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie!
Krótko i na temat - postanowiłem z lekka uporządkować kod swojego CMSu i uczynić go bardziej obiektowym. W związku z tym sprawdziłem jaki wpływa na prędkość ma zbudowanie obiektu i wykonanie metody kontra wykonanie metody statycznej, wyniki z lekka mnie zaskoczyły:
Różnica praktycznie żadna a wg teorii OOP wykonujemy akcję na danym obiekcie więc chyba najsensowniejszym podejściem jest taka organizacja obsługi podstron:
Jedna z metod (akurat w tym przykładzie) jest niezależna od id podstrony bo defakto odnosi się nie do jednej a do listy podstron. Zastanawia mnie natomiast jedna kwestia - czy obiektowo poprawnie będzie rozwiązać to tak:
Druga metoda jest wygodniejsza w użyciu, prędkością się nie różni ale nie wiem czy jest to do końca poprawne. Z góry dzięki za odpowiedź (IMG:style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 566 Pomógł: 35 Dołączył: 21.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Faktycznie, strzeliłem błąd. Przy poprawnej notacji wyniki (dla 10 tys przejść) są już nieco bardziej sensowne:
Object: 0.0358 ms Static: 0.0166 ms Tutaj faktycznie logiczniej jest tworzyć obiekt i ew. zostawiać część metod statycznych. A jeśli chodzi o klasy z wszystkimi statycznymi metodami to wydaje mi się, że ma to sens w wypadku gdy coś jest często używane w dużej ilości miejsc kodu gdzie przekazywanie uchwytu nie daje korzyści a jest upierdliwe (np. klasa do cache). Tylko teraz co z funkcjami typu getMultiById()? Wtedy jest to operacja niby nie na jednej podstronie a na wielu. Nijak tu nie pasuje podanie do konstruktora array(1,3,55,134) więc dobrze aby metoda sama w sobie przyjmowała listę idków jako argument. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 16:40 |