Array和SplFixedArray比较(代码示例)
发布:smiling 来源: PHP粉丝网 添加日期:2020-04-16 20:36:16 浏览: 评论:0
PHP 的精髓就是数组的运用,数组玩得好可以用于所有数据结构。有个叫SPL的好东西,里面有很多数据结构可供我们使用,并且性能也比我们使用数组实现的要好很多。
今天来看看SplFixedArray,顾名思义,固定大小的数组。实例化时,指定数组大小,使用过程中不可对数组进行扩容、缩小。
所以如果你有对数组进行动态操作时,可能就不太适合用它,而且SplFixedArray的索引只能是数字,不可以作为键值数组使用。
下面是测试Array和SplFixedArray的 100W 次读写性能以及内存占用,代码:
- <?php
- define('TEST_COUNT', 1000000);
- $memory = memory_get_usage();
- $writeTime = microtime(true);
- $arr = [];
- for($i = 0; $i < TEST_COUNT; ++$i)
- {
- $arr[] = $i;
- }
- $writeTime = microtime(true) - $writeTime;
- $readTime = microtime(true);
- for($i = 0; $i < TEST_COUNT; ++$i)
- {
- $value = $arr[$i];
- }
- $readTime = microtime(true) - $readTime;
- $memory = memory_get_usage() - $memory;
- echo '[Array]', PHP_EOL, 'Memory: ', $memory, ' bytes', PHP_EOL, 'Write Time: ', $writeTime, 's', PHP_EOL, 'Read Time: ', $readTime, 's', PHP_EOL;
- $memory = memory_get_usage();
- $writeTime = microtime(true);
- $splFixedArray = new SplFixedArray(TEST_COUNT);
- for($i = 0; $i < TEST_COUNT; ++$i)
- {
- $splFixedArray[$i] = $i;
- }
- $writeTime = microtime(true) - $writeTime;
- $readTime = microtime(true);
- for($i = 0; $i < TEST_COUNT; ++$i)
- {
- $value = $splFixedArray[$i];
- }
- $readTime = microtime(true) - $readTime;
- $memory = memory_get_usage() - $memory;
- echo '[SplFixedArray]', PHP_EOL, 'Memory: ', $memory, ' bytes', PHP_EOL, 'Write Time: ', $writeTime, 's', PHP_EOL, 'Read Time: ', $readTime, 's', PHP_EOL;
运行结果:
- [Array]
- Memory: 33558608 bytes
- Write Time: 0.083034038543701s
- Read Time: 0.022516965866089s
- [SplFixedArray]
- Memory: 16003208 bytes
- Write Time: 0.037343978881836s
- Read Time: 0.022947072982788s
结论:
内存占用:SplFixedArray 比 Array 能节省一半多的内存
写入性能:SplFixedArray 比 Array 更快
读取性能:五五开,多次测试下来 Array 读取速度甚至更快一些
如果你能确定只需要使用索引数组,并且能预测该数组的成员数,那显然用SplFixedArray更加适合一些。
Tags: Array SplFixedArray
- 上一篇:php的数据类型有哪些
- 下一篇:php中echo和print的区别是什么
相关文章
- ·Warning: mysql_fetch_array():(2013-11-28)
- ·php 提示Warning: mysql_fetch_array() expects(2014-01-09)
- ·php判断字符串为空函数介绍(2014-03-10)
- ·php array数组生成csv文件(2014-09-10)
- ·mysql_fetch_array 与 mysql_fetch_object函数与用法(2014-09-12)
- ·php 提示Warning: mysql_fetch_array() expects(2014-09-21)
- ·PHP中unset,array_splice删除数组中元素的区别(2021-03-26)
- ·使用array_map简单搞定PHP删除文件、删除目录(2021-04-19)
- ·php提示Warning:mysql_fetch_array() expects的解决方法(2021-05-03)
- ·php计算数组相同值出现次数的代码(array_count_values)(2021-05-08)
- ·浅谈PHP中foreach/in_array的使用(2021-06-23)
- ·PHP中in_array的隐式转换的解决方法(2021-09-04)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)