<?php
function getBigArray($n){
$arr = [];
for ($i=0; $i<$n; $i++) {
$arr[] = $i;
}
return $arr;
}
function testSpeed1($n){
$array1 = getBigArray($n);
$array2 = getBigArray($n);
$new = [];
testArrayManipulation1($array1, $array2);
$new[] = $array1;
return $end-$start;
}
function testSpeed2($n){
$array1 = getBigArray($n);
$array2 = getBigArray($n);
$new = [];
$new[] = testArrayManipulation2($array1, $array2);
return $end-$start;
}
function testSpeed3($n){
$array1 = getBigArray($n);
$array2 = getBigArray($n);
$new = [];
$new[] = testArrayManipulation3($array1, $array2);
return $end-$start;
}
function testArrayManipulation1(&$array1, $array2){
foreach($array2 as $v){
$array1[] = $v;
}
}
function testArrayManipulation2(&$array1, $array2){
foreach($array2 as $v){
$array1[] = $v;
}
return $array1;
}
function testArrayManipulation3($array1, $array2){
foreach($array2 as $v){
$array1[] = $v;
}
return $array1;
}
$n = 10;
$test1 = [];
$test2 = [];
$test3 = [];
for ($i=0; $i<$n; $i++) {
$length = 1000000;
$test1[] = testSpeed1($length);
$test2[] = testSpeed2($length);
$test3[] = testSpeed3($length);
}
echo '<br>';
echo '<br>';
PD9waHAKCmZ1bmN0aW9uIGdldEJpZ0FycmF5KCRuKXsKICAgICRhcnIgPSBbXTsKICAgIGZvciAoJGk9MDsgJGk8JG47ICRpKyspIHsKICAgICAgICAkYXJyW10gPSAkaTsKICAgIH0KICAgIHJldHVybiAkYXJyOwp9CgoKZnVuY3Rpb24gdGVzdFNwZWVkMSgkbil7CiAgICAkYXJyYXkxID0gZ2V0QmlnQXJyYXkoJG4pOwogICAgJGFycmF5MiA9IGdldEJpZ0FycmF5KCRuKTsKICAgICRuZXcgPSBbXTsKICAgICRzdGFydCA9IG1pY3JvdGltZSh0cnVlKTsKICAgIHRlc3RBcnJheU1hbmlwdWxhdGlvbjEoJGFycmF5MSwgJGFycmF5Mik7CiAgICAkbmV3W10gPSAkYXJyYXkxOwogICAgJGVuZCA9IG1pY3JvdGltZSh0cnVlKTsKICAgIHJldHVybiAkZW5kLSRzdGFydDsKfQoKZnVuY3Rpb24gdGVzdFNwZWVkMigkbil7CiAgICAkYXJyYXkxID0gZ2V0QmlnQXJyYXkoJG4pOwogICAgJGFycmF5MiA9IGdldEJpZ0FycmF5KCRuKTsKICAgICRuZXcgPSBbXTsKICAgICRzdGFydCA9IG1pY3JvdGltZSh0cnVlKTsKICAgICRuZXdbXSA9IHRlc3RBcnJheU1hbmlwdWxhdGlvbjIoJGFycmF5MSwgJGFycmF5Mik7CiAgICAkZW5kID0gbWljcm90aW1lKHRydWUpOwogICAgcmV0dXJuICRlbmQtJHN0YXJ0Owp9CgpmdW5jdGlvbiB0ZXN0U3BlZWQzKCRuKXsKICAgICRhcnJheTEgPSBnZXRCaWdBcnJheSgkbik7CiAgICAkYXJyYXkyID0gZ2V0QmlnQXJyYXkoJG4pOwogICAgJG5ldyA9IFtdOwogICAgJHN0YXJ0ID0gbWljcm90aW1lKHRydWUpOwogICAgJG5ld1tdID0gdGVzdEFycmF5TWFuaXB1bGF0aW9uMygkYXJyYXkxLCAkYXJyYXkyKTsKICAgICRlbmQgPSBtaWNyb3RpbWUodHJ1ZSk7CiAgICByZXR1cm4gJGVuZC0kc3RhcnQ7Cn0KCmZ1bmN0aW9uIHRlc3RBcnJheU1hbmlwdWxhdGlvbjEoJiRhcnJheTEsICRhcnJheTIpewogICAgZm9yZWFjaCgkYXJyYXkyIGFzICR2KXsKICAgICAgICAkYXJyYXkxW10gPSAkdjsKICAgIH0KfQoKZnVuY3Rpb24gdGVzdEFycmF5TWFuaXB1bGF0aW9uMigmJGFycmF5MSwgJGFycmF5Mil7CiAgICBmb3JlYWNoKCRhcnJheTIgYXMgJHYpewogICAgICAgICRhcnJheTFbXSA9ICR2OwogICAgfQogICAgcmV0dXJuICRhcnJheTE7Cn0KCmZ1bmN0aW9uIHRlc3RBcnJheU1hbmlwdWxhdGlvbjMoJGFycmF5MSwgJGFycmF5Mil7CiAgICBmb3JlYWNoKCRhcnJheTIgYXMgJHYpewogICAgICAgICRhcnJheTFbXSA9ICR2OwogICAgfQogICAgcmV0dXJuICRhcnJheTE7Cn0KCgokbiA9IDEwOwokdGVzdDEgPSBbXTsKJHRlc3QyID0gW107CiR0ZXN0MyA9IFtdOwpmb3IgKCRpPTA7ICRpPCRuOyAkaSsrKSB7CiAgICAkbGVuZ3RoID0gMTAwMDAwMDsKICAgICR0ZXN0MVtdID0gdGVzdFNwZWVkMSgkbGVuZ3RoKTsKICAgICR0ZXN0MltdID0gdGVzdFNwZWVkMigkbGVuZ3RoKTsKICAgICR0ZXN0M1tdID0gdGVzdFNwZWVkMygkbGVuZ3RoKTsKfQoKZWNobyBhcnJheV9zdW0oJHRlc3QxKS9jb3VudCgkdGVzdDEpOwplY2hvICc8YnI+JzsKZWNobyBhcnJheV9zdW0oJHRlc3QyKS9jb3VudCgkdGVzdDIpOwplY2hvICc8YnI+JzsKZWNobyBhcnJheV9zdW0oJHRlc3QzKS9jb3VudCgkdGVzdDMpOw==