PHP SPL±ê×¼¿âÖ®SplFixedArrayʹÓÃʵÀý

5年以前  |  阅读数:229 次  |  编程语言:PHP 

SplFixedArrayÖ÷ÒªÊÇ´¦ÀiÊý×eÏa¹ØµÄÖ÷Òª¹¦ÄÜ£¬ÓeÆÕͨphp array²»Í¬µÄÊÇ£¬ËuÊǹ̶¨³¤¶ÈµÄ£¬ÇÒÒÔÊý×ÖΪ¼uÃuµÄÊý×e£¬ÓÅÊƾÍÊDZÈÆÕͨµÄÊý×e´¦Ài¸u¿i¡£

¿´¿´ÎÒ±¾»uµÄBenchmark²aÊÔ£º


    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;
    }

½a¹uÈçÏ£º


    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

ͨ³£Çe¿oÏÂSplFixedArrayÒª±Èphp array¿iÉÏ20%~30%£¬ËuÒÔÈç¹uÄaÊÇ´¦Ài¾Þ´oÊýÁ¿µÄ¹Ì¶¨³¤¶ÈÊý×e£¬»¹ÊÇÇ¿ÁÒ½¨ÒeʹÓá£
SplFixedArrayÀaÕªÒªÈçÏ£º


    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';

    //±eÀu£¬ $arr[2] Ϊnull
    foreach($arr as $v) {
      echo $v . PHP_EOL;
    }

    //»ñÈ¡Êý×e³¤¶È
    echo $arr->getSize(); //4

    //Ôo¼ÓÊý×e³¤¶È
    $arr->setSize(5);
    $arr[4] = 'new one';

    //²¶»ñÒi³£
    try{
      echo $arr[10];
    } catch (RuntimeException $e) {
      echo $e->getMessage();
    } 
 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
贪吃蛇
文件下载
双位运算符
发送邮件
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
提取后缀名
年的日历图
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例