本文给大家分享一下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高级编程视频教程免费获取