本文给大家分享一下php教程之如何生成大数组「考虑内存」
1.我们先来看一下,如果要生成1000000个元素的数组,对内存的消耗:
<?php /** * 普通方式生成数组对内存的消耗 */ $startMemory = memory_get_usage(); $arr = range(0, 1000000); $endMemory = memory_get_usage(); echo round(($endMemory - $startMemory) / 1024 / 1024, 2) . PHP_EOL . 'mb';
结果如下:
34 mb
可以看到普通方式生成数组,对内存的消耗极大,一旦并发很容易造成内存不足
2.使用生成器原理生成数组对象的话,如下:
<?php
/**
* 使用生成器构造生成对象,查看对内存的消耗
* @param $start
* @param $end
* @param int $step
* @return Generator
*/
function xrange($start, $end, $step=1)
{
for($i=$start; $i<$end; $i+=$step)
{
yield $i;
}
}
$startMemory = memory_get_usage();
foreach (xrange(0, 1000000) as $item)
{
echo $item . '<br />';
}
$endMemory = memory_get_usage();
echo round(($endMemory - $startMemory) / 1024 / 1024, 2) . PHP_EOL . 'mb';
结果如下:
0 mb
使用生成器,可以看到对内存几乎无消耗,这是因为生成器只保存了构造数据的对象
简单分享php教程,感兴趣的小伙伴们需要更多资讯与教程欢迎关注编程学习网
扫码二维码 获取免费视频学习资料

- 本文固定链接: http://phpxs.com/post/7786/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料
查 看2022高级编程视频教程免费获取