Все говорят SplFixedArray is faster than array() но ...SplFixedArray кажется медленнее, чем массив()
<?php
$max_el = 256;
$a = array();
$c = new SplFixedArray($max_el);
for ($i = 0; $i < $max_el; $i++) {
$a[$i] = $c[$i] = mt_rand(0, 1000);
}
$start = microtime(true);
for ($j = 0; $j < 100000; $j++) {
for ($i = 0; $i < $max_el; $i++) {
$x = $a[$i];
}
}
$elapsed0 = microtime(true) - $start;
$start = microtime(true);
for ($j = 0; $j < 100000; $j++) {
for ($i = 0; $i < $max_el; $i++) {
$x = $c[$i];
}
}
$elapsed2 = microtime(true) - $start;
echo "Elapsed time: $elapsed0\r\n";
echo "Elapsed time: $elapsed2";
Выход, который выглядит следующим образом:
Elapsed time: 1.3631780147552
Elapsed time: 2.0408799648285
Таким образом, с 256 элементами массива() кажется быстрее.
Вот мои результаты с 1024 элементами:
Elapsed time: 5.6066889762878
Elapsed time: 7.7747831344604
Другой выигрыш для массива().
С 10 * 1024 элементов:
Elapsed time: 57.000520944595
Elapsed time: 88.719652891159
Реквизит, еще раз, для массива().
Когда, точно, SplFixedArray() должен быть быстрее?