Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Test szybkości stringów i zaskakujące wyniki, Jak wstawiać zmienne liczbowe do stringa
gWd
post
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 17.09.2006

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


Środowisko
PHP 5.2.1RC2
Apache 2.2.4

Test jest zerżnięty z manuala PHP, ale wyniki wcale nie pasują do tego, co tam piszą.

  1. <?php
  2. $var = 1;
  3. $timeTests = array();
  4. $timeTests[$p=0]['czas'] = microtime(true);
  5. $timeTests[$p]['znak'] = 'Start';
  6.  
  7. for( $x=0; $x < 10; $x++ )
  8. {
  9. for( $i=0; $i<100000; $i++ )
  10. {
  11. $string = " $var $var $var $var $var $var $var $var $var $var $var $var $var $var $var";
  12. unset( $string );
  13. }
  14. $timeTests[++$p]['czas'] = microtime(true);
  15. $timeTests[$p]['znak'] = 'cudzyslow';
  16.  
  17. for( $i=0; $i<100000; $i++ )
  18. {
  19. $string = ' '.$var.' '.$var.' '.$var.' '.$var.' '.$var.' '.$var.' '.$var.' '.$var.' '.$var.' '.$var.' '.$var.' '.$var.' '.$var.' '.$var.' '.$var;
  20. unset( $string );
  21. }
  22. $timeTests[++$p]['czas'] = microtime(true);
  23. $timeTests[$p]['znak'] = 'apostrof';
  24. }
  25.  
  26. echo '<br />';
  27. $timePrev = 0;
  28. foreach ($timeTests as $time)
  29. {
  30. echo $time['znak'].': ';
  31. echo ($time['czas'] - $timePrev).'<br />';
  32. $timePrev = $time['czas'];
  33. }
  34. ?>


Wyniki:
cudzyslow: 0.88375806808472
apostrof: 0.8967490196228
cudzyslow: 0.74423408508301
apostrof: 0.87470483779907
cudzyslow: 0.74281716346741
apostrof: 0.87087082862854
cudzyslow: 0.76653909683228
apostrof: 0.88087105751038
cudzyslow: 0.75698590278625
apostrof: 0.89448595046997
cudzyslow: 0.73796796798706
apostrof: 0.8895571231842
cudzyslow: 0.7416090965271
apostrof: 0.91190385818481
cudzyslow: 0.74819707870483
apostrof: 0.90215492248535
cudzyslow: 0.73282599449158
apostrof: 0.88878703117371
cudzyslow: 0.75126600265503
apostrof: 0.90079808235168

Opis wyników i wnioski
Jak widać stworzenie stringów przez łączenie tekstu i integera (' '.$var) jest wolniejsze o około 20% niż wstawienie tego integera do stringa(" $var")exclamation.gif!
Ale może ja coś źle robię?


--------------------
art of programming
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
Darti
post
Post #2





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


U mnie na
Apache/2.0.54 (Win32)
PHP/5.0.4
GATEWAY_INTERFACE CGI/1.1

Wyszło:
cudzyslow: 2.0188918113708
apostrof: 1.9210340976715
cudzyslow: 1.9675788879395
apostrof: 1.9178881645203
cudzyslow: 1.9565420150757
apostrof: 1.9147698879242
cudzyslow: 1.9571330547333
apostrof: 1.9302790164948
cudzyslow: 1.9417450428009
apostrof: 1.9113168716431

Czyli szybciej wykonuje się apostrof ... Nie wiem od czego to zależy blinksmiley.gif


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
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 Aktualny czas: 20.08.2025 - 03:16