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
 
Start new topic
Odpowiedzi
Radarek
post
Post #2





Grupa: Zarejestrowani
Postów: 188
Pomógł: 0
Dołączył: 23.05.2005

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


No to teraz wytlumacz, czemu chcesz niektore wartosci zmieniac, aby byly widoczne tylko w niektorych klasach?(IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Chcesz zeby w jednej klasie "red" oznaczalo kolor "ffffff" a w drugiej "red" kolor "000000"?(IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Chyba kolory powinny byc wspolne dla wszystkich klas?

EDIT:

Hm tak jeszcze na szybko (bo do konca nie rozumiem co chcesz osiagnac:) ). Mozesz zrobic jedna duza wspolna tablice (static) dla wsystkich klas (globalne kolory), oraz dodatkowo dodac zwyczajna tablice (nie static), w nim bedziesz trzymac indywidualne kolory (jak mniemam, duzo mniejszej od tej globalnej:)). Jak bedziesz szukac danego koloru to wpierw sprawdzisz czy jest w tej lokalnej (indywidualnej) tablicy, a potem ew. w tej globalnej (static).

Ten post edytował Radarek 9.02.2006, 11:45:56
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: 24.12.2025 - 14:14