PHP yield占用内存测试

function com($start)
{
    $tmp = [];
    for($i=0; $i<300000; $i++){
        $tmp[] = $i;
    }
    $end = memory_get_usage();
    echo 'com 函数占的内存:', ($end-$start), '<br>';
    return $tmp;
}

function gen($start)
{
    // echo 'gen 函数站的内存:', memory_get_usage(), '<br>';
    for($i=0; $i<300000; $i++){
        yield $i;
    }
    $end = memory_get_usage();
    echo '生成器占用的内存:', ($end-$start), '<br>';
}
$start = memory_get_usage();  //初识内存
echo '程序开始加载...<br>'; 
echo '初始内存:', $start, '<br>';
echo '加载com函数:<br>';
(com($start));
$end = memory_get_usage();
echo '开始加载生成器...<br>';
$start = memory_get_usage();
foreach (gen($start) as $key => $value) {
    //echo $value;
}
$end = memory_get_usage();
echo '生成器运行结束程序占用的内存:',($end), '<br>';
echo '程序运行结束!<br>';

输出结果:

程序开始加载...
初始内存:377928
加载com函数:
com 函数占的内存:14680128
开始加载生成器...
生成器占用的内存:544
生成器运行结束程序占用的内存:377928
程序运行结束!
原文地址:https://www.cnblogs.com/bneglect/p/12015011.html