php 使用yield生成器节省内存

循环数据,查看内存使用对比

<?php

namespace Hjj\DesignPatterns\Tests;

use PHPUnit\Framework\TestCase;

class YieldTest extends TestCase
{
//    public function makeRange($length) {
//        $dataSet = [];
//        for ($i=0; $i<$length; $i++) {
//            $dataSet[] = $i;
//        }
//        return $dataSet;
//    }
//    public function testLongFor() {
//        
//        $customRange = $this->makeRange(1000000);
//        foreach ($customRange as $i) {
//            echo $i . PHP_EOL;
//        }
//        $this->assertSame(1,1);
//    }
//
    public function makeRangeByYield($length) {
        for ($i=0; $i<$length; $i++) {
            yield $i;
        }
    }
    public function testYield() {
        foreach ($this->makeRangeByYield(1000000) as $i) {
            echo $i . PHP_EOL;
        }
        $this->assertSame(1,1);
    }
}

第一个,直接循环
// Time: 00:01.084, Memory: 72.00 MB

第二个,使用yield
// Time: 00:01.128, Memory: 36.00 MB

使用生成器迭代流资源(文件、音频等)

function getRows($file) {
    $handle = fopen($file, 'rb');
    if ($handle == FALSE) {
        throw new Exception();
    }
    while (feof($handle) === FALSE) {
        yield fgetcsv($handle);
    }
    fclose($handle);
}

foreach (getRows($file) as $row) {
    print_r($row);
}

相关推荐

  1. php 使用yield生成器节省

    2024-03-20 05:56:02       20 阅读
  2. union节省

    2024-03-20 05:56:02       12 阅读
  3. 查看php进程占用

    2024-03-20 05:56:02       39 阅读
  4. python使用迭代生成器yield减少内存占用的方法

    2024-03-20 05:56:02       14 阅读
  5. CUDA锁页使用

    2024-03-20 05:56:02       37 阅读
  6. C语言的联合体:一种节省的数据结构

    2024-03-20 05:56:02       25 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-20 05:56:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-20 05:56:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-20 05:56:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-20 05:56:02       20 阅读

热门阅读

  1. ubuntu2310制作离线源

    2024-03-20 05:56:02       18 阅读
  2. logrus包学习(一)

    2024-03-20 05:56:02       20 阅读
  3. cuda从入门到精通(五)CUDA实现AI模型中的softmax

    2024-03-20 05:56:02       21 阅读
  4. C--动态规划

    2024-03-20 05:56:02       18 阅读
  5. XR虚拟拍摄:短剧制作的新宠

    2024-03-20 05:56:02       21 阅读
  6. ARM day4 代码

    2024-03-20 05:56:02       17 阅读
  7. 富格林:揭露黑幕套路安全规避风险

    2024-03-20 05:56:02       20 阅读
  8. 认识DDR3

    2024-03-20 05:56:02       16 阅读
  9. 蓝桥杯-带分数

    2024-03-20 05:56:02       21 阅读
  10. (保姆级)离线安装mongoDB集群

    2024-03-20 05:56:02       18 阅读
  11. 实时数仓的另一种构建方法starRocks的物化视图

    2024-03-20 05:56:02       17 阅读