Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Test szybkości stringów i zaskakujące wyniki
Forum PHP.pl > Forum > PHP
gWd
Ś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ę?
Darti
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.