forum Sea of Sin / Startseite sitemap

Sea of Sin / Blog

Zentrum der Langeweile

PHP strlen Performance

2009/01/28 von de_henne
Was macht Coder wenn er um halb 4 aufwacht?
Sich über weitere Performancetipps schlau machen, da dieses Thema zeitaufwändig ist, ist 4 Uhr morgens doch perfekt dafür.
Seit längerem habe ich in meinen Favos die 63+ Optimize PHP Tipps von chazzuka in meinen Favos.
Also machte ich mich daran mir das gute Stück einmal durchzulesen.

Ein Tipp fand ich relativ interessant, die Verwendung von strlen.

Standard:
  1. if (strlen($foo) < 5) { echo "Foo is too short"; }

Optimiert:
  1. if (!isset($foo{5})) { echo "Foo is too short"; }


Das ganze musste natürlich getestet werden und zu meiner Überraschung steckt zwischen den zwei Aufrufen ein himmelweiter Unterschied.

Meine Testergebnisse bei 1000fachem Aufruf:
Dauer strlen: 0.0636348724365 Sekunden
Dauer isset: 0.00122714042664 Sekunden


Mein Testcode:
  1.  
  2. <?php
  3.  
  4. $max = 1000;
  5. $str = 'huaaaaaaaaaaaaaaaaaa';
  6.  
  7.  
  8. $start1 = microtime(true);
  9. test1();
  10. $end1 = microtime(true);
  11.  
  12. echo 'Dauer test1: '. ($end1-$start1) .' Sekunden<br>';
  13.  
  14.  
  15. $start2 = microtime(true);
  16. test2();
  17. $end2 = microtime(true);
  18.  
  19. echo 'Dauer test2: '. ($end2-$start2) .' Sekunden<br>';
  20.  
  21.  
  22.  
  23. function test1()
  24. {
  25. global $max, $str;
  26.  
  27. for ($i = 0; $i < $max; $i++)
  28. {
  29. if (!isset($str{5})) {
  30. // code
  31. }
  32. }
  33. }
  34.  
  35.  
  36.  
  37. function test2()
  38. {
  39. global $max, $str;
  40.  
  41. for ($i = 0; $i < $max; $i++)
  42. {
  43. if (strlen($str) < 5) {
  44. // code
  45. }
  46. }
  47. }
  48.  
  49. ?>
  • Keine Kommentare