自从5.3版本开始,PHP在SPL扩展中提供了一个叫做splFixedArray的数组[链接],splFixedArray数组相比标准的PHP数组更接近于C语言的数组,而且由于splFixedArray没有使用散列(Hash)存储方式,因此效率更高。下面我们就写一个简单的脚本来测试一下它们两者之间的性能差别。
测试环境
Windows 8.1 64位
WampServer 2.4
测试脚本代码
<?php
$size = 1000000;
$format = 'Time spent of %s(%d) is : %f seconds.</br>';
// test of splFixedArray
$spl_arr = new splFixedArray($size);
$start_time = microtime(true);
for ($i = 0; $i < $size; $i++) {
$spl_arr[$i] = $i;
}
$time_spent = microtime(true) - $start_time;
printf($format, "splFixedArray", $size, $time_spent);
// test of PHP array
$php_arr = array();
$start_time = microtime(true);
for ($i = 0; $i < $size; $i++) {
$php_arr[$i] = $i;
}
$time_spent = microtime(true) - $start_time;
printf($format, "PHP array", $size, $time_spent);
测试结果
在这个测试中,我们分别向两个不同的数组中插入100万个元素,结果PHP数组花费的时间比splFixedArray慢0.1s~0.2s之间,因此splFixedArray在性能上确实比PHP array要高的,不过splFixedArray的使用是有条件限制的,比如初始化的时候一定要设置好它的大小(size),以及不能使用整数以外的key等。