Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Ile można zaoszczędzić czasu na NIEinclude'owaniu plików PHP?
adbacz
post 2.01.2012, 16:47:02
Post #1





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

Ostrzeżenie: (0%)
-----


Tak się zastanawiam właśnie, czy można zbudować aplikację, albo jakis prosty FW używając jednego pliku PHP? Albo dwóch, index.php do którego przychodzi żądanie z przeglądarki i JakisGlownyPlik.php który zawiera wszystko co potrzeba. Gdzieś czytałem kiedyś, że include i require bardzo dużo czasu zabiera apache-owi, żeby przyłączyć pliki do działania. Ale czy można pozbyć się tego słabego punktu budując aplikację w jednym pliku?

Nie biorę tutaj pod uwagi jakości kodu oraz prostego poruszania się w nim (to nawet nie możliwe jest), ale ogólnej szybkości. Oczywiście wszystko napisane z użyciem OOP itd. Co o tym myślicie?
Go to the top of the page
+Quote Post
nospor
post 2.01.2012, 16:49:19
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Totalna ...... Wiesz ile kodu zajmuje średnio zaawansowana aplikacja? Duuuuuuuuużo. A ty to wszystko chcesz w jednym pliku trzymać.
Powód edycji: [nospor]:


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
adbacz
post 2.01.2012, 17:00:18
Post #3





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

Ostrzeżenie: (0%)
-----


Średnio zaawansowana aplikacja - jaką masz na myśli? Jestem początkujący, i faktycznie mogę nie wiedzieć jak bardzo "kobylaste" mogą być aplikacje WEB no ale az takie? Jaka może być różnica w include plików powiedzmy 40-50 (szacuję, że coś koło tego, zawsze jest włączanych do projektu) a jednego dużego? pytam czysto teoretycznie wink.gif
Go to the top of the page
+Quote Post
nospor
post 2.01.2012, 17:05:27
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Srednio skomplikowana aplikacja zajmuje parę mega.

Stworzyłem plik o rozmiarze 2.6 MB. Plik składal się z linii:
$zm = 1 + 3 +4 .'aaaaa'.'5';
linii tych jest prawie 100tys.

include takiego pliku trwa 0.38 sekundy i konsumuje prawie 200MB pamięci. A takich odwołan będziesz miał tyle ile userów.
Zaincludowanie paru zdecydowanie mniejszych plików zajmuje zdecydowanie mniej czasu i mniej pamięci.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
erix
post 2.01.2012, 19:31:48
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Jestem początkujący, i faktycznie mogę nie wiedzieć jak bardzo "kobylaste" mogą być aplikacje WEB no ale az takie? Jaka może być różnica w include plików powiedzmy 40-50 (szacuję, że coś koło tego, zawsze jest włączanych do projektu) a jednego dużego

Tak, aż takie. Poza tym, poguglaj sobie, co to jest code coverage.

A wciskanie wszystkiego do jednego pliku jest bez sensu:
  • utrudnia pracę grupową
  • zwiększa zużycie pamięci, jak zauważył ~nospor
  • nie można tego normalnie edytować (bo środowisko zaczyna pożerać w cholerę pamięci)
  • jw., tylko outline pliku musi być przewijane bez końca
  • marnujesz pamięć akceleratora


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Uriziel01
post 2.01.2012, 19:50:11
Post #6





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


Średnio zaawansowany projekt (nawet mało zaawansowany) prawdopodobnie nigdy nie potrzebuje wczytać 100% dostępnego kodu. Jeżeli projekt waży 4-5MB (normalna ilość kodu), to podczas pojedyńczego requesta potrzebujesz może 10-20% tego kodu, czyli średnio 750KB, nie wyobrażam sobie abym pomijając include/require zaoszczędził czas ładując 4,25MB zbędnego kodu. Pomijam już kosmiczne zużycie pamięci tego potworka, pomyśl o samych obciążeniach dla IDE podczas edycji tego. Bardzo ale to bardzo kiepski pomysł, podsumowując.

Ten post edytował Uriziel01 2.01.2012, 19:50:46
Go to the top of the page
+Quote Post
adbacz
post 2.01.2012, 19:50:57
Post #7





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

Ostrzeżenie: (0%)
-----


Dziękuję za rozjaśnienie mi w głowie. Oczywiście to było pytanie czysto teoretyczne i nie uwzględniałem takich problemów jakie napisał erix. Zastanawiałem się tylko, czy możnaby było napisać aplikację, która jako pewnego rodzaju cache, włącza właśnie wszystki pliki, z których korzysta - do jednego pliku. Ale teraz widzę, że to zła droga. Dzięki za uwagi.
Go to the top of the page
+Quote Post
erix
post 2.01.2012, 20:13:17
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Zastanawiałem się tylko, czy możnaby było napisać aplikację, która jako pewnego rodzaju cache, włącza właśnie wszystki pliki, z których korzysta - do jednego pliku. Ale teraz widzę, że to zła droga. Dzięki za uwagi.

Już parę lat temu ktoś wpadł na ten pomysł pisząc APC/eAccelerator/etc. Teraz prawie każdy serwer posiada jakiś akcelerator zainstalowany z interpreterem. [;


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
by_ikar
post 2.01.2012, 20:36:00
Post #9





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Czas wykonywania takiego skryptu gdzie jest dużo include/require głównie jest zauważalny, ponieważ operacje na plikach są wolne. Zmień dysk na ssd, lub utwórz ramdisk i sprawdź różnice.
Go to the top of the page
+Quote Post
erix
post 2.01.2012, 21:20:11
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Czas wykonywania takiego skryptu gdzie jest dużo include/require głównie jest zauważalny, ponieważ operacje na plikach są wolne. Zmień dysk na ssd

Kolega ~by_ikar chyba nie czytał:

Cytat
Już parę lat temu ktoś wpadł na ten pomysł pisząc APC/eAccelerator/etc.

O ile zakład, że skrypt wykona się szybciej z dyskietki na interpreterze z APC niż z dysku SSD bez akceleratora?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Uriziel01
post 3.01.2012, 07:23:57
Post #11





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


Cytat(erix @ 2.01.2012, 21:20:11 ) *
O ile zakład, że skrypt wykona się szybciej z dyskietki na interpreterze z APC niż z dysku SSD bez akceleratora?


Oj z tobą to mógł bym się zakładać wink.gif Tak mało detali.
Challenge Accepted:
  1. <?php
  2. $dane="123\n";
  3. $file="test.txt";
  4. for(i=0;i<10000;i++)
  5. {
  6. $fp=fopen("$file", "r+");
  7. $dane=$dane.fread($fp, filesize($file));
  8. rewind($fp);
  9. flock($fp, 2);
  10. fwrite($fp, $dane);
  11. flock($fp, 3);
  12. fclose($fp);
  13. }
  14. ?>

Ma ktoś stacje dyskietek aby to sprawdzić ? biggrin.gif

EDIT:
Oczywiście niech nikt nie bierze powyższego kodu na serio, jest to tylko luźny humor związany z tematem.

Ten post edytował Uriziel01 3.01.2012, 08:13:08
Go to the top of the page
+Quote Post
erix
post 3.01.2012, 08:00:03
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ale include a operacje I/O, to "lekko" coś innego, a przypominam, czego wątek dotyczy.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 15:03