fork download
  1. <?php
  2. function italico1(&$arr)
  3. {
  4. $cant = count($arr);
  5.  
  6. if ($cant==0) return null;
  7. $salida = null;
  8.  
  9. if ($cant>1)
  10. {
  11. for ($i=0;$i<$cant-2;$i++)
  12. $salida .= $arr[$i].' ,';
  13.  
  14. return $salida.$arr[$cant-2].' y '.$arr[$cant-1];
  15.  
  16. }else
  17. return $arr[0];
  18.  
  19. }
  20.  
  21. function italico2(&$arr)
  22. {
  23. switch (count($arr))
  24. {
  25. case 0: return null;
  26. case 1: return $arr[0];
  27. default:
  28. $ult = array_pop($arr);
  29. return implode (' ,',$arr).' y '.$ult;
  30. }
  31. }
  32.  
  33. function alexis($array) {
  34. $string = implode(", ", $array);
  35. return substr_replace ($string, " y ", strrpos($string, ","), 2);
  36. }
  37.  
  38. $a = range(1, 1000);
  39.  
  40. $ini2 = microtime(true) * 1000;
  41. for ($i = 0; $i < 1000; $i++)
  42. alexis($a);
  43. $fin2 = microtime(true) * 1000;
  44. $tiempoAlexis = $fin2 - $ini2;
  45.  
  46. $ini1 = microtime(true) * 1000;
  47. for ($i = 0; $i < 1000; $i++)
  48. italico1($a);
  49. $fin1 = microtime(true) * 1000;
  50. $tiempoItalico1 = $fin1 - $ini1;
  51.  
  52. $ini1 = microtime(true) * 1000;
  53. for ($i = 0; $i < 1000; $i++)
  54. italico2($a);
  55. $fin1 = microtime(true) * 1000;
  56. $tiempoItalico2 = $fin1 - $ini1;
  57.  
  58.  
  59. echo "Italico (script #1): " . $tiempoItalico1."\n";
  60. echo "Italico (script #2): " . $tiempoItalico2."\n";
  61. echo "Alexis: " . $tiempoAlexis;
  62.  
Success #stdin #stdout 0.93s 20864KB
stdin
Standard input is empty
stdout
Italico (script #1): 587.38818359375
Italico (script #2): 172.72485351562
Alexis: 168.13696289062