![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 740 Pomógł: 15 Dołączył: 23.08.2004 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Odnosnie map klas i autoloadera zastanawialem sie nad wydajnoscia ich stosowania. Co prawda mapa klas (oczywiscie zakladajac ze jest tworzona przy pomocy generatora) w polaczeniu z autoloaderem pozwala na ogromna elastycznosc w przenoszeniu plikow miedzy katalogami. Z drugiej strony majac ogromna liczbe klas - liczoną w setkach - taka mapa rozrasta nam sie do ogromnych rozmiarow. Dodawanie tablicy liczacej kilkaset pozycji, z ktorych w danym wywolaniu skorzystamy zaledwie z kilkunastu (no moze z kilkudziesieciu) jest zbednym balastem dla naszego skryptu.
Mozna oczywiscie zastosowac manewr z dzieleniem tablic na kilka mniejszych. Dla kazdego "narzedzia", "aplikacji", zestawu skryptow czy jak to nazwiemy tworzymy osobna mape klas, ale jest to jedynie rozwiazanie polowiczne. Jesli przykladowo stworzymy osobna mape dla naszego systemu szablonow, osobna dla abstrakcji dostepu do bazy danych itd. to jesli nawet wykonamy jedno najprostsze zapytanie i wyswietlimy jego wynik przy pomocy wspomnianego szablonu to i tak musimy dolaczyc zaikludowac mapy. Zapewne istnieje jakas bardziej rozsadna metoda zarzadzania mapa klas, ale w chwili obecnej nie przychodzi mi taka na mysl. Moze ktos z was taka zaproponuje. Ja ze swej strony wole recznie dbac o dodawanie odpowiednich plikow. Jesli jakas klasa dziedziczy po innej to zwyczajnie w klasie dzidziczacej inkluduje plik z klasa rodzicielska. Jedyny problem to niekiedy niepotrzebne sprawdzanie include_once w chwili kiedy dana klasa jest juz dodana. Inna niedogodnoscia jest utrata elastycznosci ale udalo mi sie to do pewnego stopnia obejsc przy pomocy definiowania stalej oraz dirname(__FILE__). Co sadzicie o wydajnosci stosowania automap i autoloadera oraz czy waszym zdaniem lepiej miec wieksza swobode w przemieszczaniu plikow czy bardziej zoptymalizowana aplikacje i czy ta optymalizacja jest naprawde warta zachodu jakim jest reczna dłubanina? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) ![]() ![]() |
No to pójdźmy o krok dalej. Jaki jest sens w oddanym do użytku kodzie umieszczać include_once, skoro można umieścić kod załączanego pliku? Przecież to drugie rozwiązanie będzie bardziej wydajne.
Zaleta autoloadera jest taka, że nie mamy wpisanych na sztywno ścieżek do pliku i nic nas nie zmusza do tego, aby klasa Foo była w pliku foo.php. Podobną optymalizację widziałem kiedyś w starym mojavi (w nowym nie wiem jak jest): wersja debug składała się z wielu plików, wersja produkcyjna z jednego dużego. Tylko że a) pewnie autor musiał ręcznie wywalać include_once, i (IMG:http://forum.php.pl/style_emoticons/default/cool.gif) niektóre klasy były ładowane niepotrzebnie. A tutaj możemy policzyć/zmierzyć, jak często jaka klasa jest wywoływana, i umieścić w jednym pliku tylko te najczęściej używane. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 03:40 |