PHP 性能优化工具:生成器的生产力优势是什么?
生成器有以下优点:
- 生成器对PHP应用程序的性能影响很大
- PHP代码运行时节省大量内存
- 更适合计算大量数据
概念介绍
首先我们简化一下发电机负载的概念,来看一个简单的 PHP 函数:
function rangeNum($num){
$data = [];
for($i=0;$i<$num;$i++){
$data[] = time();
}
return $data;
}
复制代码
这是一个非常简单的 PHP 函数,我们在处理一些函数时经常会用到。数组逻辑。这里的代码也很简单。
我们再写一个函数来获取$data中的数据
$data = rangeNum(10);
foreach($data as $value){
sleep(1);
echo $value.'<br />';
}
复制代码
完美,没问题。
思考:
如果我们调用函数的时候超过1000万或者更多,那么当我们调用for循环1000万次的时候,$data内存中就会存储1000万个数据项,如果函数名占用大量内存
创建生成器
我们直接更改函数
function rangeNum($num){
for($i=0;$i<$num;$i++){
yield time();
}
}
复制代码
使用生成器
$data = rangeNum(10);
foreach($data as $value){
sleep(1);
echo $value.'<br />';
}
复制代码
此时您应该对生成器有了一个了解。
概念理解
首先我们澄清一个概念:生成器yield token不是返回值。专业术语称为产出值。它只是生成一个值
实际开发应用
读取非常大的文件
PHP开发经常需要读取大文件,比如csv文件、excel文件或者一些日志文件。如果这些文件很大,比如说20G。目前,将所有内容直接读入内存进行处理是不切实际的。
百万访问量
收益生成器在PHP 5.5版本后出现。 Yield 提供了一种更简单的方法来实现简单的迭代对象。与类实现Iterator接口的方式相比,性能开销和复杂度都大大降低。
作者:abel_xudong
链接:https://juejin.im/post/6850037263268511751
来源:掘金
。商业转载请联系作者获取授权。非商业转载请注明出处。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。