Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Singleton] Wydajność
Astarot
post
Post #1





Grupa: Zarejestrowani
Postów: 90
Pomógł: 4
Dołączył: 5.02.2006

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


Witam, postanowiłem przetestować czas wykonywania skryptu dla klasy skonstruowanej wg. wzorca Singleton, wywoływanej poprzez metode statyczną która decyduje czy należy tworzyć nowy obiekt klasy. Wywoływałem tą klasę również w tradycyjny sposób. Czas wykonywania skryptu wyglądał
następująco :

Kod
Skrypt wykonany w czasie: 1.485986 sekundy (tradycyjnie wywołany obiekt)
Skrypt wykonany w czasie: 2.203427 sekundy(wg. singleton)


Byc moze zle implementuje ten wzorzec w swojej aplikacji wiec podaje poniżej kod :

  1. <?php
  2.  
  3. class Test2
  4. {
  5. public $licznik;
  6.  
  7. private static $oInstance = false;
  8.  
  9.  
  10. public static function getinstance ( )
  11. {
  12. if ( self::$oInstance == false )
  13. {
  14. self::$oInstance = new Test2( );
  15. }
  16. return self::$oInstance;
  17. }
  18. public function mnozenie()
  19. {
  20. return $this->licznik*10;
  21. }
  22. } 
  23.  
  24. ?>


Klasę wywołuję wg singleton tym kodem:

  1. <?php
  2.  
  3. for($i=0; $i<80000; $i++)
  4. {
  5. $test =& Test2::getinstance ( ); 
  6. $test->licznik=$test->licznik++;
  7. echo $test->mnozenie();
  8. }
  9.  
  10. ?>


A tak tworze obiekt klasy w tradycyjny sposób(wg. moich testów ten sposób jest szybszy)
  1. <?php
  2.  
  3. for($i=0; $i<80000; $i++)
  4. {
  5. $test = New Test2( ); 
  6. $test->licznik=$test->licznik++;
  7. echo $test->mnozenie();
  8. }
  9.  
  10. ?>


Czy może mi ktoś wyjaśnić dlaczego kod wg singleton jest wykonywany wolniej i kiedy warto
w swoich aplikacjach implementować ten wzorzec ?

Z góry dzieki za pomoc.
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: 6.10.2025 - 04:50