![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 61 Pomógł: 0 Dołączył: 17.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
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 ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 9 Dołączył: 3.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 61 Pomógł: 0 Dołączył: 17.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
muszę przyznać iż jakoś ciężko mi sobie wyobrazić jakbym miał każda funkcję osobno wrzucać do osobnego pliku (IMG:http://forum.php.pl/style_emoticons/default/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 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 403 Pomógł: 68 Dołączył: 20.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
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) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 9 Dołączył: 3.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
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 (IMG:http://forum.php.pl/style_emoticons/default/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ą |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 14:43 |