I remember when PHP 7 was released. The first thing I did was a simple performance test. I don’t remember the script exactly, but it was similar to this:
<?php
$time = microtime(true);
$array = [];
for ($i = 0; $i < 10000; $i++) {
if (!array_key_exists($i, $array)) {
$array[$i] = [];
}
for ($j = 0; $j < 1000; $j++) {
if (!array_key_exists($j, $array[$i])) {
$array[$i][$j] = true;
}
}
}
echo sprintf(
"Execution time: %f seconds\nMemory usage: %f MB\n\n",
microtime(true) - $time,
memory_get_usage(true) / 1024 / 1024
);
The results made me really happy. Memory usage was much lower and time execution had decreased a lot.
Recently, with the above script saved as “test.php”, I ran the test again, this time for multiple PHP version.
#!/usr/bin/env bash
versions=( 5.6 7.0 7.1 7.2 )
for v in "${versions[@]}"
do
cmd="docker run --rm -ti -v ${PWD}/test.php:/test.php php:${v}-alpine3.7 php -d memory_limit=2048M test.php"
sh -c "echo ${v} && ${cmd}"
done
With the results:
5.6 Execution time: 4.288818 seconds Memory usage: 1379.250000 MB 7.0 Execution time: 1.433924 seconds Memory usage: 360.000000 MB 7.1 Execution time: 1.376682 seconds Memory usage: 360.000000 MB 7.2 Execution time: 0.590186 seconds Memory usage: 360.000000 MB
Interesting results. Can’t wait to see how 7.3 will perform.
Yep, waiting for production release.
There is a bug in the code, it should be 1024, not 1042.
Thanks!