首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP中被忽略的性能优化利器:生成器

(当然sleep(1)效果你们看不出来) 思考一个问题 我们注意到,在调用函数createRange的时候给$number的传值是10,一个很小的数字。...那么,在函数createRange里面,for循环就需要执行1000万次。且有1000万个值被放到data里面,而data数组在是被放在内存内。所以,在调用函数时候会占用大量内存。...那是因为: 未使用生成器时:createRange函数内的for循环结果被很快放到$data中,并且立即返回。所以,foreach循环的是一个固定的数组。...使用生成器时:createRange的值不是一次性快速生成,而是依赖于foreach循环。foreach循环一次,for执行一次。 到这里,你应该对生成器有点儿头绪。...首先调用createRange函数,传入参数10,但是for值执行了一次然后停止了,并且告诉foreach第一次循环可以用的值。

1.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PHP中 yield生成器处理大数据文件、性能优化很有用

    (当然sleep(1)效果你们看不出来) 思考一个问题 我们注意到,在调用函数createRange的时候给$number的传值是10,一个很小的数字。...那么,在函数createRange里面,for循环就需要执行1000万次。且有1000万个值被放到$data里面,而$data数组在是被放在内存内。所以,在调用函数时候会占用大量内存。...那是因为: 未使用生成器时:createRange函数内的for循环结果被很快放到$data中,并且立即返回。所以,foreach循环的是一个固定的数组。...使用生成器时:createRange的值不是一次性快速生成,而是依赖于foreach循环。foreach循环一次,for执行一次。 到这里,你应该对生成器有点儿头绪。...首先调用createRange函数,传入参数10,但是for值执行了一次然后停止了,并且告诉foreach第一次循环可以用的值。

    1.4K40

    PHP中被忽略的性能优化利器->生成器

    (当然 sleep(1) 效果你们看不出来) 思考一个问题 我们注意到,在调用函数 createRange 的时候给 $number 的传值是10,一个很小的数字。...那是因为: 未使用生成器时: createRange 函数内的 for 循环结果被很快放到 $data 中,并且立即返回。所以, foreach 循环的是一个固定的数组。...使用生成器时: createRange 的值不是一次性快速生成,而是依赖于 foreach 循环。 foreach 循环一次, for 执行一次。 到这里,你应该对生成器有点儿头绪。...function createRange($number){ for($i=0;$i<$number;$i++){ yield time(); }} $result = createRange...首先调用 createRange 函数,传入参数10,但是 for 值执行了一次然后停止了,并且告诉 foreach 第一次循环可以用的值。

    82730

    PHP 中被忽略的性能优化利器:生成器

    (当然 sleep(1)效果你们看不出来) 思考一个问题 我们注意到,在调用函数 createRange的时候给 $number的传值是10,一个很小的数字。...那是因为: 未使用生成器时: createRange函数内的 for循环结果被很快放到 $data中,并且立即返回。所以, foreach循环的是一个固定的数组。...使用生成器时: createRange的值不是一次性快速生成,而是依赖于 foreach循环。 foreach循环一次, for执行一次。 到这里,你应该对生成器有点儿头绪。...= createRange(10); // 这里调用上面我们创建的函数 foreach($result as $value){ sleep(1); echo $value.'...首先调用 createRange函数,传入参数 10,但是 for值执行了一次然后停止了,并且告诉 foreach第一次循环可以用的值。

    87660
    领券