fork download
  1. <?php
  2.  
  3. function getBigArray($n){
  4. $arr = [];
  5. for ($i=0; $i<$n; $i++) {
  6. $arr[] = $i;
  7. }
  8. return $arr;
  9. }
  10.  
  11.  
  12. function testSpeed1($n){
  13. $array1 = getBigArray($n);
  14. $array2 = getBigArray($n);
  15. $new = [];
  16. $start = microtime(true);
  17. testArrayManipulation1($array1, $array2);
  18. $new[] = $array1;
  19. $end = microtime(true);
  20. return $end-$start;
  21. }
  22.  
  23. function testSpeed2($n){
  24. $array1 = getBigArray($n);
  25. $array2 = getBigArray($n);
  26. $new = [];
  27. $start = microtime(true);
  28. $new[] = testArrayManipulation2($array1, $array2);
  29. $end = microtime(true);
  30. return $end-$start;
  31. }
  32.  
  33. function testSpeed3($n){
  34. $array1 = getBigArray($n);
  35. $array2 = getBigArray($n);
  36. $new = [];
  37. $start = microtime(true);
  38. $new[] = testArrayManipulation3($array1, $array2);
  39. $end = microtime(true);
  40. return $end-$start;
  41. }
  42.  
  43. function testArrayManipulation1(&$array1, $array2){
  44. foreach($array2 as $v){
  45. $array1[] = $v;
  46. }
  47. }
  48.  
  49. function testArrayManipulation2(&$array1, $array2){
  50. foreach($array2 as $v){
  51. $array1[] = $v;
  52. }
  53. return $array1;
  54. }
  55.  
  56. function testArrayManipulation3($array1, $array2){
  57. foreach($array2 as $v){
  58. $array1[] = $v;
  59. }
  60. return $array1;
  61. }
  62.  
  63.  
  64. $n = 10;
  65. $test1 = [];
  66. $test2 = [];
  67. $test3 = [];
  68. for ($i=0; $i<$n; $i++) {
  69. $length = 1000000;
  70. $test1[] = testSpeed1($length);
  71. $test2[] = testSpeed2($length);
  72. $test3[] = testSpeed3($length);
  73. }
  74.  
  75. echo array_sum($test1)/count($test1);
  76. echo '<br>';
  77. echo array_sum($test2)/count($test2);
  78. echo '<br>';
  79. echo array_sum($test3)/count($test3);
Success #stdin #stdout 2.89s 150132KB
stdin
Standard input is empty
stdout
0.039992022514343<br>0.037306714057922<br>0.032509183883667