Code前端首页关于Code前端联系我们

PHP 性能优化工具:生成器的生产力优势是什么?

terry 2年前 (2023-09-25) 阅读数 60 #后端开发

生成器有以下优点:

  • 生成器对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前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门