fork download
  1. <?
  2. $times = 500000;
  3.  
  4. $url = 'http://196.168.132.21/test';
  5. $myRoot = 'http://196.168.132.21/';
  6.  
  7. // >>320
  8. $start = microtime(true);
  9. for($i=0;$i<$times;++$i) {
  10. $last = end(explode('/', $url, 4));
  11. }
  12. $end = microtime(true);
  13. print_r($end-$start . "\n");
  14.  
  15. // >>316 explodeを曲解(それは思いつかなかった、と思ったやり方はこれでした。)
  16. $start = microtime(true);
  17. for($i=0;$i<$times;++$i) {
  18. $last = end(explode($myRoot, $url, 2));
  19. }
  20. $end = microtime(true);
  21. print_r($end-$start . "\n");
  22.  
  23. // >>316 parse_url
  24. // このままでは結果はtestではなく、/testとなってしまう点に注意
  25. $start = microtime(true);
  26. for($i=0;$i<$times;++$i) {
  27. $result = parse_url($url);
  28. $last = $result['path'];
  29. }
  30. $end = microtime(true);
  31. print_r($end-$start . "\n");
  32.  
  33. // >>318 strlen + substr
  34. $start = microtime(true);
  35. for($i=0;$i<$times;++$i) {
  36. $last = substr($url, strlen($myRoot));
  37. }
  38. $end = microtime(true);
  39. print_r($end-$start . "\n");
  40.  
  41. // >>319 置換
  42. $start = microtime(true);
  43. for($i=0;$i<$times;++$i) {
  44. $last = str_replace($myRoot, '', $url);
  45. }
  46. $end = microtime(true);
  47. print_r($end-$start . "\n");
  48.  
Success #stdin #stdout 4.25s 20568KB
stdin
Standard input is empty
stdout
1.4571940898895
1.1401081085205
0.91307282447815
0.30574703216553
0.437824010849