php spl库-定长数组

简介: php spl库-定长数组

php SPL库是用于解决典型问题(standard problems)的一组接口与类的集合。


本文主要讲定长数组(SplFixedArray)


定长数组可以产生一个正常数组,不同的是,该数组是固定的,数组不能超过长度,它的速度比一般的数组快,定长数组只能是索引数组


定义一个php定长数组(php5.3之后spl已经成为了php内核的一部分,不需要额外安装即可直接使用)

$arraynewSplFixedArray(5);

$array[0]=1;//定义数组[0]值为1

$array['aaa']=1;//非数字将出错

$array->setSize(10);//修改数组长度

var_dump($array);

其他方法可进入php官方文档查看:http://php.net/manual/zh/class.splfixedarray.php


一下是spl定长数组与普通数组的效率比对:

ini_set('memory_limit','2048M');//防止内存不足,临时更改内存上限

for($size= 1000; $size< 50000000; $size*= 2) {

    echoPHP_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), $containernewSplFixedArray($size), $i= 0; $i$size$i++) $container[$i] = NULL;

    echo"SplArray(): ". (microtime(true) - $s) . PHP_EOL;

}

精确度有差,应该是测试环境,可自测,官方解释是

数据量小1000左右

定长数组写入比php数组快15%,读取快5%;

数据量大,51w条数据时

定长数组写入比php数组快33%,读取快10%;


Testing size: 1000

Array(): 0.00027203559875488

SplArray(): 0.0007932186126709


Testing size: 2000

Array(): 0.00049781799316406

SplArray(): 0.00032687187194824


Testing size: 4000

Array(): 0.0010740756988525

SplArray(): 0.00073003768920898


Testing size: 8000

Array(): 0.0021700859069824

SplArray(): 0.0016100406646729


Testing size: 16000

Array(): 0.004626989364624

SplArray(): 0.0036690235137939


Testing size: 32000

Array(): 0.0095100402832031

SplArray(): 0.0072238445281982


Testing size: 64000

Array(): 0.016055822372437

SplArray(): 0.0084800720214844


Testing size: 128000

Array(): 0.024579048156738

SplArray(): 0.016443967819214


Testing size: 256000

Array(): 0.0483078956604

SplArray(): 0.038909912109375


Testing size: 512000

Array(): 0.10647821426392

SplArray(): 0.074150085449219


Testing size: 1024000

Array(): 0.22535705566406

SplArray(): 0.14000296592712


Testing size: 2048000

Array(): 0.42199611663818

SplArray(): 0.29096388816833


Testing size: 4096000

Array(): 0.88509798049927

SplArray(): 0.81293106079102


目录
相关文章
|
6月前
|
PHP C++ 索引
PHP 高效之道:字符串与数组处理的实用技巧
PHP 高效之道:字符串与数组处理的实用技巧
266 83
|
7月前
|
JSON 数据处理 PHP
PHP数组处理技巧:高效操作数据集合
PHP数组处理技巧:高效操作数据集合
|
7月前
|
JSON 安全 大数据
PHP中的数组处理艺术:灵活高效的数据操作
PHP中的数组处理艺术:灵活高效的数据操作
|
7月前
|
大数据 数据处理 PHP
PHP中的数组过滤与映射:高效数据处理技巧
PHP中的数组过滤与映射:高效数据处理技巧
|
6月前
|
存储 JSON PHP
PHP数组键值转换的隐秘陷阱:整数还是字符串?
PHP数组键值转换的隐秘陷阱:整数还是字符串?
221 58
|
6月前
|
JavaScript Linux PHP
composer如何安装以及举例在PHP项目中使用Composer安装TCPDF库-优雅草卓伊凡
composer如何安装以及举例在PHP项目中使用Composer安装TCPDF库-优雅草卓伊凡
205 3
composer如何安装以及举例在PHP项目中使用Composer安装TCPDF库-优雅草卓伊凡
|
6月前
|
PHP 开发者 索引
探究PHP中常见数组操作函数
在编码实践中,合理利用这些数组操作函数可以简化编程工作,提升代码的效率和可读性。为达到最佳实践,开发者应该通过阅读官方文档来深入理解每个函数的工作原理以及如何在不同的场景下运用它们。
228 8
|
6月前
|
测试技术 PHP 开发者
PHP 数组查找:为什么 `isset()` 比 `in_array()` 快得多?
PHP 数组查找:为什么 `isset()` 比 `in_array()` 快得多?
|
9月前
|
PHP
基于PHP开发的资源库系统源码
基于PHP开发的资源库系统源码
205 13
|
9月前
|
Linux PHP iOS开发
PHP-Raylib 视 频 游 戏 编 程 库
php-raylib 是基于 PHP-FFI 绑定的 raylib-v5.5 游戏开发库,让 PHP 开发者轻松实现视频游戏编程。相比仅支持 4.+ 版本的原库,本项目适配最新 5.5 版本,并提供友好文档与示例代码(如窗口初始化、文本绘制等)。支持 PHP 7.4+ 和多平台(Windows、Linux、macOS),可通过 Composer 快速安装。欢迎贡献和完善![查看文档](http://raylib.kllxs.top/) 或访问仓库(GitHub/Gitee/Gitcode)。
PHP-Raylib 视 频 游 戏 编 程 库