PHP SPL标准库之SplFixedArray使用实例

SplFixedArray主要是处理数组相关的主要功能,与普通php array不同的是,它是固定长度的,且以数字为键名的数组,优势就是比普通的数组处理更快。

看看我本机的Benchmark测试:

  ini_set('memory_limit','12800M');     for($size = 10000; $size < 10000000; $size *= 4) {    echo PHP_EOL . "Testing size: $size" . PHP_EOL;    for($s = microtime(true), $container = Array(), $i = 0; $i < $size; $i++) $container[$i] = NULL;    echo "Array(): " . (microtime(true) - $s) . PHP_EOL;       for($s = microtime(true), $container = new SplFixedArray($size), $i = 0; $i < $size; $i++) $container[$i] = NULL;    echo "SplArray(): " . (microtime(true) - $s) . PHP_EOL;  }

结果如下:

  Testing size: 10000  Array(): 0.004000186920166  SplArray(): 0.0019998550415039     Testing size: 40000  Array(): 0.017001152038574  SplArray(): 0.0090007781982422     Testing size: 160000  Array(): 0.050002098083496  SplArray(): 0.046003103256226     Testing size: 640000  Array(): 0.19701099395752  SplArray(): 0.16700983047485     Testing size: 2560000  Array(): 0.75704312324524  SplArray(): 0.67303895950317    

通常情况下SplFixedArray要比php array快上20%~30%,所以如果你是处理巨大数量的固定长度数组,还是强烈建议使用。
SplFixedArray类摘要如下:

  SplFixedArray implements Iterator  , ArrayAccess  , Countable  {    /* 方法 */    public __construct ([ int $size = 0 ] )    public int count ( void )    public mixed current ( void )    public static SplFixedArray fromArray ( array $array [, bool $save_indexes = true ] )    public int getSize ( void )    public int key ( void )    public void next ( void )    public bool offsetExists ( int $index )    public mixed offsetGet ( int $index )    public void offsetSet ( int $index , mixed $newval )    public void offsetUnset ( int $index )    public void rewind ( void )    public int setSize ( int $size )    public array toArray ( void )    public bool valid ( void )    public void __wakeup ( void )  }    

使用SplFixedArray:

  $arr = new SplFixedArray(4);  $arr[0] = 'php';  $arr[1] = 1;  $arr[3] = 'python';     //遍历, $arr[2] 为null  foreach($arr as $v) {    echo $v . PHP_EOL;  }     //获取数组长度  echo $arr->getSize(); //4     //增加数组长度  $arr->setSize(5);  $arr[4] = 'new one';     //捕获异常  try{    echo $arr[10];  } catch (RuntimeException $e) {    echo $e->getMessage();  }   

PHP SPL标准库之SplFixedArray使用实例

郑重声明:本网站发布的内容(图片、视频和文字)以及用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服

发表评论

登录后才能评论