-1

每个人都说SplFixedArray 比 array() 快,但是......

<?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 个元素 array() 似乎更快。

这是我的 1024 个元素的结果:

Elapsed time: 5.6066889762878
Elapsed time: 7.7747831344604

array() 的另一个胜利。

使用 10*1024 个元素:

Elapsed time: 57.000520944595
Elapsed time: 88.719652891159

再次为 array() 提供道具。

究竟什么时候 SplFixedArray() 应该更快?

4

1 回答 1

1

您提到的较早线程中链接到的页面似乎主要谈论写入时间和内存使用情况。在这里,您只查看阅读时间。

于 2013-04-30T21:23:19.070 回答