Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wielka tablica w obiekcie, oszczednosc zasobow
bigZbig
post
Post #1





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


Mam pewne watpliwosci i chce sie upewnic.

Zalozmy ze klasa korzysta z wlasciwosci ktora jest tablica o ogromnych rozmiarach.
  1. <?php
  2. class klasaPrzykladowa
  3. {
  4. private $duzaTablica = array();
  5. protected $pojedynczaWartosc;
  6.  
  7. public function __construct() {
  8. //ta tablica jest sporych rozmiarow
  9. $this->duzaTablica = array('cos1', 'cos2', '...', 'cosX');
  10. }
  11.  
  12. public function cosSieDzieje($x) {
  13. //w zaleznosci od $x cos sie dzieje 
  14. //pojawia sie zmienna $y
  15. $this->pojedynczaWartosc = $this->duzaTablica[$y];
  16. }
  17. }
  18.  
  19. ?>

Zalozmy tez, ze w ciagu jednego wywolania strony generuje kilkadziesiat obiektow bedacych instancjami tej wlasnie klasy.

Czy kazdy obiekt tej klasy bedzie zawieral kopie tej duzej tablicy?

Czy wydzielenie tej tablicy na zewnatrz klasy pozwoli zaoszczedzic zasoby pamieci a jesli tak to czy Waszym zdaniem oplaca sie to przeprowadzic kosztem hermetyzacji.

  1. <?php
  2.  
  3. //ta tablica jest sporych rozmiarow
  4. $duzaTablica = array('cos1', 'cos2', '...', 'cosX');
  5.  
  6. class klasaPrzykladowa
  7. {
  8. protected $pojedynczaWartosc;
  9.  
  10. public function cosSieDzieje($x) {
  11. //w zaleznosci od $x cos sie dzieje 
  12. //pojawia sie zmienna $y
  13. $this->pojedynczaWartosc = $GLOBALS['duzaTablica'][$y];
  14. }
  15. }
  16. ?>

Wiem ze przyklad jest mocno hipotetyczny ale chodzilo jedynie o zobrazowanie problemu, ktory mnie nurtuje.

edit
----------------------
Poprawiono załóżmy i zamieniono global na $GLOBALS

Ten post edytował bigZbig 8.02.2006, 17:49:38
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 22.12.2025 - 16:33