![]() |
![]() |
![]()
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: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
Masz błąd w teście: statycznie wywołujesz metodę niestatyczną i na odwrót, ale wyniki generalnie masz w miarę OK - wywołanie metod statycznych jest wolniejsze niż niestatycznych. Różnice nie są wprawdzie duże, ale są.
Elementy statyczne w klasach z formalnego punktu widzenia nie mają z programowaniem obiektowym nic wspólnego, ponieważ jak programowaniem obiektowym może być coś, gdzie nie mamy obiektów? Na dobrą sprawę nie wnoszą one zbyt wiele do większości języków programowania. W Javie są one nawet przydatne, ale dlatego, że nie ma tam w ogóle funkcji. W PHP ich zastosowanie ogranicza się wyłącznie do podlegania automatycznemu ładowaniu i modyfikatorom dostępu. Ja od jakiegoś czasu mam bardzo prostą zasadę: * pól statycznych nie używam w ogóle, * metody statyczne używam tylko wtedy, gdy naprawdę wiem, co robię i że mi naprawdę jest to potrzebne. Poza tym wszystko jedzie na obiektach. Jeśli faktycznie cały mechanizm odpalania akcji będzie zgodny z zasadami projektowania obiektowego, to wtedy zauważysz, że Twój ostatni listing to nieporozumienie (IMG:style_emoticons/default/smile.gif) . |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 19:03 |