Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> $GLOBALS['element'], szybkość tej tablicy
Zigi
post
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 3
Dołączył: 20.11.2004

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


Mam takie pytanie:
Jak szybka jest tablica $GLOBALS w porównaniu np z np.

  1. <?php
  2.  
  3. function ta(){
  4. global $zmienna;
  5. }
  6.  
  7. ?>


lub po prostu gdy zmieniam wartość elementu w tej tablicy to jak szybko to się dzieje w porównaniu z innymi sposobami przechowywania zmiennych. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Zigi 2.01.2005, 15:35:47
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
orson
post
Post #2





Grupa: Zarejestrowani
Postów: 548
Pomógł: 2
Dołączył: 19.07.2003

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


witam ...

powiem szczeze ze dosc dziwne wyniki mi wyszly jak sobie zrobilem tescik ... taki skrypcik:
  1. <?php
  2. $GLOBALS['test'] = 'foo!!';
  3. $test2 = 'foo!!';
  4.  
  5. function speedTest1($n) {
  6. for($i = 0; $i < $n; $i++){
  7. print $GLOBALS['test'];
  8. }
  9. }
  10.  
  11. function speedTest2($n) {
  12. global $test;
  13. for($i = 0; $i < $n; $i++){
  14. print $test;
  15. }
  16. }
  17.  
  18. function speedTest3($n) {
  19. for($i = 0; $i < $n; $i++){
  20. print $GLOBALS['test2'];
  21. }
  22. }
  23.  
  24. function speedTest4($n) {
  25. global $test2;
  26. for($i = 0; $i < $n; $i++){
  27. print $test2;
  28. }
  29. }
  30.  
  31. speedTest1(100000);
  32. speedTest2(100000);
  33. speedTest3(100000);
  34. speedTest4(100000);
  35.  
  36. ?>

i najwolniejszy jest .... <werble> .... </werble> speedTest4 (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) wykonanie zajmuje [przy 100 000 w loopie] okolo 1.8s ... a teraz 2 niespodzianka ... najszybszy jest speedTest1 (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) !!! okolo 450 ms (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) czyli poza uzywaniem zmiennych w funkcjach wazny jest rowniez sposob deklaracji ... przy deklaracji zmiennej jako globalnej na poczatku zyskujemy na wydajnosci [moze php najpierw sprawdza tablice $GLOBALS a jak zmiennej tam niema to szuka w pamieci zmiennych ?] wydajnosc jest zgodna z deklaracja kolejnych funckji ... pomiary robilem przy pomocy profilera z nusphere phped 3.3.3 i plugina DBG php debugger version 2.16.14 na php 4.3.8... powtarzane kilka razy na 2 serwerach ...
przy bardziej zyciowej ilosci loopow [100] sytuacja sie zmienila ... najszybsze funkcjie to speedTest4 i 2 [na zmiane ... roznica w zakresie bledu] a najwolniejsze to 1 i 2 ... ale to i tak nic nie zmienia ... dlatego ze wykoanie najszybszej trwalo 0.165 a najwolniejszej 0.205 ... wiec odwrotnosc wynikow moze byc spowodowana .... dlugoscia wiersza z printem [sic!] - profiler pokazuje czas wykonania poszczegolnych wierszy nie tylko czas funkcji ...

ps. mowie zeby nie bylo jakis watpliwosci zmienilem kolejnosc funkcji w pliku na odwrotna i nadal najwolniesza byla speedTest4

ps2. jak juz jestesmy przy profilerze to moze kilka ciekawostek:
  • czas wykonania linij z forami [przy 100 000] nie jest stale ... nie mam pojecia od czego zalezy ale widoczne byly spore wahania ... ale nie ma sie czym przejmowac ... minimum 90 ms maksimum 150 ms ... czyli tyle co nic ...
  • ob_start() zawsze tyle samo: 0.047 ms
  • ob_end_clean() zalezne od ilosci danych ... przy 100 okolo 0.02 ms przy 100 000 okolo 0.4 ms
pozdrowiam
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: 26.12.2025 - 00:13