PHP SPL标准库之SplFixedArray使用实例
2015-05-12 09:48
766 查看
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_autoload_register()用法和__autoload()介绍
- PHP SPL使用方法和他的威力
- php中spl_autoload详解
- PHP spl_autoload_register实现自动加载研究
- PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
- PHP中spl_autoload_register()函数用法实例详解
- 解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
- PHP SPL标准库之数据结构栈(SplStack)介绍
- PHP SPL标准库中的常用函数介绍
- PHP SPL标准库之接口(Interface)详解
- PHP SPL 被遗落的宝石【SPL应用浅析】
相关文章推荐
- PHP SPL标准库之SplFixedArray使用实例
- PHP SPL标准库之SplFixedArray使用实例
- PHP SPL标准库之数据结构固定长度数组(SplFixedArray)
- PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
- PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
- PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
- PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
- PHP 双链表(SplDoublyLinkedList)简介和使用实例
- PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
- PHP SplObjectStorage使用实例
- PHP SplObjectStorage使用实例
- PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
- PHP 双链表(SplDoublyLinkedList)简介和使用实例
- 使用php标准库spl在实现观察者模式
- php标准库(SPL)-迭代器-AppendIterator和ArrayIterator详解
- 【SPL标准库专题(8)】 Datastructures:SplFixedArray
- php数组查找函数in_array()、array_search()、array_key_exists()使用实例
- PHP SplObjectStorage使用实例
- PHP使用标准库spl实现的观察者模式示例
- php的array数组和使用实例简明教程(容易理解)