Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP - pytanie ogólne
Forum PHP.pl > Forum > PHP
kowalcook
witam, od jakiegoś czasu projektuje nowy silnik dla swojego serwisu internetowego, staram się aby w miare swoich umiejętnosci i wiedzy jak najbardziej go zoptymalizować i przyspieszyć wszystko

w związku z tym dręczą mnie pytania zasadnicze dotyczące tego


czy:

- jest różnica w tym że plik php jest duży (wielkościowo - ponad 100 czy 200KB ) i zawiera dużo funkcji (powiedzmy jeden cały moduł - dział strony), które są ładowane jako osobne podstrony przy wykorzystaniu polecenia switch

- czy lepiej jest rozłożyć funkcje na kilka różnych plików i ładować je w zależności od zastosowania w danym module ?



czy wielkość pliku ma znaczenie pomimo iż teoretycznie przeglądarka renderuje tylko jakiś ułamek całego kodu w nim zawartego ?






druga kwestia to zapytania do bazy danych mySQL czy lepiej jest wykonać jedno pełne zapytanie powiedzmy z * i zdefiniowanie wszystkich komórek dla jednego rekordu (czy lepiej wykonywać kilka pojedynczych cząstkowych zapytań wywołując to co akurat jest niezbędne) (mowa o sytuacji kiedy w danej dabeli jest kilkaset tysięcy rekordów)

który sposób byłby teoretycznie wydajniejszy ?
zimi
optymalizację robi się na końcu, to jest 'najpierwsiejsze z pierwszych', co musisz wiedzieć

jeśli nie napisałeś aplikacji jeszcze napisz ją w taki sposób abyś mógł ją potem poprawnie optymalizować

ale skoro już napisałeś...

jeśli masz miliardy funkcji w pliku, a korzystasz z jednej, to lepiej tą jedną funkcję wrzucić do osobnego pliku
jeśli korzystasz z zestawu funkcji które są w różnych plikach, to lepiej je wrzucić do pliku jako całość

im więcej pól masz do wyplucia tym więcej procesor będzie musiał wykonać operacji wysłania/odebrania... te dane będą wędrować od sql do php
tak więc im mniej danych wypluję tym zasadniczo lepiej

szczególnie to widać jak nie 'drukujesz' duuużej kolumny w stosunku do reszty danych

nie mniej, optymalizację robi się na końcu
kowalcook
muszę przyznać iż jakoś ciężko mi sobie wyobrazić jakbym miał każda funkcję osobno wrzucać do osobnego pliku smile.gif

korzystam z wielu funkcji ale wiele równiez jest uzależnionych jaka podstronę załadujesz


(powiedzmy obrazowo najprościej to przedstawić lista, podgląd, wyszukiwanie, dodawanie, edytowanie, kasowanie, pottwierdzenie edycji, potwierdzenie kasowania i tak możnaby mnożyć to plus cały szereg funkcji pomocniczych)


łącznie robi się tego calkiem spory zasobik (podzieliłem sobie to na moduły jak już zaznaczyłem ale kazdy modół to i tak masa kodu) - pytanie moje brzmi bardziej czy ta masa kodu nawet gdy przeglądarka jej nie renderuje jest gdzieś wczytywana (a więc czy jej wioeklość może jakoś wpłynąć na szybkośc wykonania konkretnej operacji)






co do sql to też jak wspomniałem


tu mam dylemat w kwesti jedno większe zapytanie czy kilka cząstkowych (dla jednego zadania powiedzmy)




a co do optymalizacji to masz racje ale to że jestem samoukiem staram się wypracować sobie jakiś ogólny model pracy uwzględniając jak najwięcej tego co jest prawidłowe



pozdro
f1xer
Cytat(kowalcook @ 8.08.2008, 02:02:51 ) *
jestem samoukiem staram się wypracować sobie jakiś ogólny model pracy uwzględniając jak najwięcej tego co jest prawidłowe


Przy dużych portalach radzę zapoznać się z MVC ja też byłem przeciwny ale gdy się pojmie chociaż samą logikę to wszystko wydaje się łatwe (gorzej jak się zabierzesz do pisania:D)
zimi
nie napisałem że każdą funkcję do osobnego pliku masz wrzucić...
dla PHP niemal wszystko ma wpływ na wydajność nawet to czy zastosujesz operator pre czy postinksrementacji, podobno szybszy jest pre... a więc ++$i będzie ciut szybsze niż $i++
ale to nie znaczy że powinieneś tak pisać bo może to być np. mniej czytelne

z tego co pamiętam jak stała jest lewą stroną warunku też całość przebiega szybciej
czyli:

if(4 == wartosc_funkcji()) będzie szybsze niż if(wartosc_funkcji() == 4)
jednak ten pierwszy jest dla mnie nieczytelny i nie chciałbym tak pisać moich kodów

im więcej kodu do sparsowania czyli im dłuższy plik z funkcjami tym dłużej będzie trwało ich parsowanie... to chyba dość logiczne

im więcej plików do sparsowania tym więcej będzie operacji dyskowych...

jednak różnica jaką to sobą reprezentuję jest minimalna

dlatego zajmuje się tym gdy widać że optymalizacji potrzeba

pytanie odnośnie mysql jeśli dobrze je zrozumiałem jest zupełnie bez sensu
chodzi Ci o
SELECT * FROM tabela
vs.
SELECT id FROM tabela
SELECT tytul FROM tabela
SELECT tekst FROM tabela
SELECT data FROM tabela
questionmark.gif
jeśli tak pierwsze będzie na pewno szybsze

Twoim zadaniem jest trzymać się takich wzorców (a właściwie najlepiej by było byś się ich trzymał): OOP, DRY, RAD, kod dobrze udokumentowany zależnie od aplikacji być może jakiś MVC i trzymanie się aby żadna funkcja nie była za długa

w dokumentacji frameworka Symfony którą ostatnio czytam sugerowali aby kod zawierający się w funkcji pojedynczej akcji nie miał więcej niż 10 linii kodu

zasadniczo wszystkie funkcje powinny realizować jakiś mały zakres działań i być stosunkowo krótkimi

jeśli trzymając się tych warunków napiszesz aplikację, poprawienie kodu nie będzie problemem bo wszystko będzie czytelne
miejsc wąskich gardeł nie przewidzisz, właśnie dlatego zamiast przewidywać gdzie będzie wolno działać się to profiluje...

zasada różnie nazywana: np 80/20 -> 20% kodu wykonuję się 80% czasu -> należy podjąć się optymalizacji tego fragmentu kodu

dlatego najpierw napisz aplikację starając się korzystać z wspomnianych metodologii, jak będzie działać pomyśl nad optymalizacją
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.