gpt4 book ai didi

php - laravel游标和laravel block 方法有什么区别?

转载 作者:太空狗 更新时间:2023-10-30 01:42:31 26 4
gpt4 key购买 nike

我想知道 laravel block 和 laravel 游标方法有什么区别。哪种方法更适合使用?它们的用例是什么?我知道你应该使用游标来节省内存,但它在后端是如何工作的呢?

带有示例的详细解释会很有用,因为我在 stackoverflow 和其他网站上进行了搜索,但没有找到太多信息。

这是来自 laravel 文档的代码片段。

分块结果

Flight::chunk(200, function ($flights) {
foreach ($flights as $flight) {
//
}
});

使用光标

foreach (Flight::where('foo', 'bar')->cursor() as $flight) {
//
}

最佳答案

我们有一个比较: chunk() vs cursor()

  • cursor():高速
  • chunk():常量内存使用

10,000 条记录:

+-------------+-----------+------------+
| | Time(sec) | Memory(MB) |
+-------------+-----------+------------+
| get() | 0.17 | 22 |
| chunk(100) | 0.38 | 10 |
| chunk(1000) | 0.17 | 12 |
| cursor() | 0.16 | 14 |
+-------------+-----------+------------+

100,000 条记录:

+--------------+------------+------------+
| | Time(sec) | Memory(MB) |
+--------------+------------+------------+
| get() | 0.8 | 132 |
| chunk(100) | 19.9 | 10 |
| chunk(1000) | 2.3 | 12 |
| chunk(10000) | 1.1 | 34 |
| cursor() | 0.5 | 45 |
+--------------+------------+------------+
  • TestData:Laravel默认迁移的users表
  • 家园 0.5.0
  • PHP 7.0.12
  • MySQL 5.7.16
  • Laravel 5.3.22

关于php - laravel游标和laravel block 方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45464676/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com