首页 > 编程语言 >php yield理解

php yield理解

时间:2022-08-31 18:15:18浏览次数:68  
标签:1024 PHP MB yield EOL 理解 memory usage php

使用yield之前

function actionIndex($message = 'hello world')
{
    $valuesArray = [];
    // 获取初始内存使用量
    echo '开始'.round(memory_get_usage() / 1024 / 1024, 2) . ' MB' . PHP_EOL;
    for ($i = 1; $i < 800000; $i++) {
        $valuesArray[] = $i;
        // 为了让我们能进行分析,所以我们测量一下内存使用量
        if (($i % 200000) == 0) {
            // 来 MB 为单位获取内存使用量
            echo '中间'.round(memory_get_usage() / 1024 / 1024, 2) . ' MB'. PHP_EOL;
        }
    }
    return $valuesArray;
}
actionIndex();

使用yield之后

function getValues() {
    // 获取内存使用数据
//        echo round(memory_get_usage() / 1024 / 1024, 2) . ' MB' . PHP_EOL;
    file_put_contents("log-memory.txt", '开始'.print_r(round(memory_get_usage() / 1024 / 1024, 2) . ' MB',1).PHP_EOL, FILE_APPEND);
    for ($i = 1; $i < 800000; $i++) {
        yield $i;
        // 做性能分析,因此可测量内存使用率
        if (($i % 200000) == 0) {
            // 内存使用以 MB 为单位
            file_put_contents("log-memory.txt", '中间'.print_r(round(memory_get_usage() / 1024 / 1024, 2) . ' MB',1).PHP_EOL, FILE_APPEND);
            //echo round(memory_get_usage() / 1024 / 1024, 2) . ' MB'. PHP_EOL;
        }
    }
}
//测试
function actionTest()
{
    $myValues = getValues(); // 在循环之前都不会有动作
    echo '开始'.round(memory_get_usage() / 1024 / 1024, 2) . ' MB' . PHP_EOL;
    foreach ($myValues as $Key=> $value) {
//        echo $value.PHP_EOL;
        if (($Key % 200000) == 0) {
            // 来 MB 为单位获取内存使用量
            echo '中间' . round(memory_get_usage() / 1024 / 1024, 2) . ' MB' . PHP_EOL;
        }
    } // 开始生成数据
}
actionTest();

 

标签:1024,PHP,MB,yield,EOL,理解,memory,usage,php
From: https://www.cnblogs.com/fyiyy/p/16644060.html

相关文章

  • 末日题材推理解谜游戏
    World'sEndClub世界末日俱乐部formac是mac上一款由同名小说动漫改编的正版日式冒险RPG,游戏的剧情非常的精彩,玩家将和自己俱乐部的成员一起逃离这个千疮百孔的世界。每......
  • 对C语言中回调函数(callback)的一点理解
    一般函数形式:functiona(char*a,Stringb):接收的参数是一般类型;特殊函数:functionb(char*a,functionc):接收的其中一个参数是函数(只是为了表述方便这么写,实际应该......
  • 彻底理解协程
    1详解协程1.1多线程的困境人类压榨CPU的脚步从未停止过。在实际的生产过程中,我们将CPU的任务分为两大类:计算密集型:数值计算、逻辑判断的任务较多。CPU利用率非常高。......
  • 集群和分布式理解
    公司用到的很多技术,自己之前都没学过(尬),于是只能慢慢补了。这次给大家写写我学习集群和分布式的笔记,希望对大家有帮助。集群和分布式:集群:很多“人”一起,做相同的事情。......
  • 彻底理解协程
    1详解协程1.1多线程的困境人类压榨CPU的脚步从未停止过。在实际的生产过程中,我们将CPU的任务分为两大类:计算密集型:数值计算、逻辑判断的任务较多。CPU利用率非常高。......
  • PHP文件操作
    //php读文件$data=file_get_contents('./1.txt');var_dump($data);//php写文件file_put_contents('./1.txt',date('Y-m-dH:i:s').PHP_EOL,FILE_APPEND);/**......
  • [网鼎杯 2020 朱雀组]phpweb-1|反序列化
    1、打开界面之后界面一直在刷新,检查源代码也未发现提示信息,但是在检查中发现了两个隐藏的属性:func和p,抓包进行查看一下,结果如下:2、对两个参数与返回值进行分析,我们使用d......
  • 说说你对闭包的理解?闭包使⽤场景?
    闭包说的通俗⼀点就是打通了⼀条在函数外部访问函数内部作⽤域的通道。正常情况下函数外部是访问不到函数内部作⽤域变量的表象判断是不是闭包:函数嵌套函数,内部函数被......
  • 禅道二次开发(四):集成PhpSpreadsheet解析Excel文件
    PhpSpreadsheet是一个PHP表格文件处理库,可用来读写excel文件,本文介绍如何在禅道中引入PhpSpreadsheet库,可以使用它来解析Excel文件,比如上传excel格式的测试用例、导出测试......
  • vue——插槽的作用与理解
    1.作用:让父组件可以向子组件指定位置插入html结构,也是一种组件间通信的方式,适用于父组件===>子组件2.分类:默认插槽、具名插槽、作用域插槽3.使用方式:默认插槽:子组件:......