美文网首页
php生成器

php生成器

作者: 江江简书 | 来源:发表于2020-12-14 21:31 被阅读0次

生成器在大内存存储处理的场景下,非常优雅,但是从时间维度上来看生成器有在用时间换空间的嫌疑,但是这也是一个非常不错的场景

初探

function test1()
{
for ($i = 0; $i < 3; $i++) {
yield $i + 1;
}
yield 1000;
yield 1001;
}
foreach (test1() as $t) {
echo $t, PHP_EOL;
}
// 1
// 2
// 3
// 1000
// 1001
  • 生成器像return,但和return又有差距,return会中断下面的执行,而yield相当于是一次次的返回。

生成器内存维度测试

// 内存占用测试
$start_time = microtime(true);
function test2($clear = false)
{
    $arr = [];
    if($clear){
    $arr = null;
    return;
}

for ($i = 0; $i < 1000000; $i++) {
    $arr[] = $i + 1;
}

return $arr;
}

$array = test2();
foreach ($array as $val) {
}

$end_time = microtime(true);
echo "time: ", bcsub($end_time, $start_time, 4), PHP_EOL;
echo "memory (byte): ", memory_get_usage(true), PHP_EOL;


$start_time = microtime(true);
function test3()
{
    for ($i = 0; $i < 1000000; $i++) {
        yield $i + 1;
    }
}
$array = test3();

foreach ($array as $val) {
}
$end_time = microtime(true);
echo "time: ", bcsub($end_time, $start_time, 4), PHP_EOL;
echo "memory (byte): ", memory_get_usage(true), PHP_EOL;

返回键值对

function test5()
{
    for ($i = 0; $i < 10; $i++) {
        yield 'key.' . $i => $i + 1;
    }
}

foreach (test5() as $k=>$t) {
    echo $k . ':' . $t, PHP_EOL;
}

参考文章:https://mp.weixin.qq.com/s/R3MtOvi-hQiCMfDzSj6bzw

相关文章

  • 生成器

    PHP Manual手册对于生成器的概述:PHP Manual Generator PHP Manual手册新特性...

  • php 生成器的理解和使用

    PHP中被忽略的性能优化利器:生成器 PHP 手册-生成器总览 开头介绍的这个文章总结的很详细,而且大多的介绍其实...

  • 简单理解PHP生成器

    适用PHP版本 (PHP 5 >= 5.5.0, PHP 7) 生成器提供了一种更容易的方法来实现简单的对象迭代,...

  • 常用的PHP类库,PHP开发者必备

    PHP开发者常用的PHP类库和组件PDF 生成器FPDF - 这量一个可以让你生成PDF的纯PHP类库。Excel...

  • Python基础笔记-12

    71.生成器 http://bbs.fishc.com/forum.php?mod=viewthread&tid=...

  • PHP 生成器

    在学习python时,发现有个yield(生成器)的概念,就特别留意了下。看书时发现PHP在5.5中已经增加了生成...

  • PHP生成器

    Generators 生成器提供了一种容易的方法来实现简单的迭代器 生成器允许您编写使用foreach的代码迭代一...

  • php生成器

    生成器在大内存存储处理的场景下,非常优雅,但是从时间维度上来看生成器有在用时间换空间的嫌疑,但是这也是一个非常不错...

  • PHP生成器和yield

    简介 生成器和yield结合可以实现php的协程 前置知识 如果对生成器和yield不了解,可以先看看下面两个博客...

  • PHP性能优化利器:生成器 yield理解

    如果是做Python或者其他语言的小伙伴,对于生成器应该不陌生。但很多PHP开发者或许都不知道生成器这个功能,可能...

网友评论

      本文标题:php生成器

      本文链接:https://www.haomeiwen.com/subject/gypbgktx.html