PHP 生成器

什么是php生成器

生成器提供了一种更容易的方法来实现简单的对象迭代,相比较定义类实现 Iterator 接口的方式,性能开销和复杂性大大降低。

  • 生成器允许你在 foreach 代码块中写代码来迭代一组数据而不需要在内存中创建一个数组, 那会使你的内存达到上限,或者会占据可观的处理时间。
  • 你可以写一个生成器函数,就像一个普通的自定义函数一样, 和普通函数只返回一次不同的是, 生成器可以根据需要 yield 多次,以便生成需要迭代的值。
  • 标准的 range() 函数需要在内存中生成一个数组包含每一个在它范围内的值,然后返回该数组, 结果就是会产生多个很大的数组。 比如,调用 range(0, 1000000) 将导致内存占用超过 100 MB

我们在遍历大大数据的时候,占用内存非常高。

<?php
$start = microtime(true);

$end = microtime(true);

echo 'range(0, 1000000) ','<br/>';
$arr=range(0, 1000000) ;

 $use_time = number_format($end-$start, 8);

 echo '耗时'.$use_time.'秒<br>';

 echo 'Now 使用内存: ' . bcdiv(memory_get_usage(),1024*1024,2) . 'M<br />';

黑白课堂

php 5.6 直接就超过了内存限制。我这里默认是128M
限制我们改下,用生成器看看

需要花费 10个元宝,后才能查看完整内容 立即购买

提示

评论区 (0)

没有记录
支持 markdown,图片截图粘贴拖拽都可以自动上传。
黑白课堂

黑白课堂

混元大罗金仙 站长创业者玉树凌风每天醒来0收入

查看更多

最新视频课程

Laravel 的 PhpSpreadsheet 包入门

wap2App 入门讲解,100%速成,全面为你讲解。

ace.js 打造一款属于你的 Web 编辑器,入门文档。

Laravel Permission 中文文档

解释 OAuth 2.0 认证 和使用场景说明

Laravel 之 horizon 队列管理界面系统

钻级赞助商