gpt4 book ai didi

kotlin - 多少个协程就太多了?

转载 作者:行者123 更新时间:2023-12-02 09:24:55 25 4
gpt4 key购买 nike

我需要加快对包含数百万元素的集合的搜索速度。搜索谓词需要作为参数传递。

我一直想知道最简单的解决方案(至少现在)是否不只是使用协程来完成任务。

我现在面临的问题是我实际上可以同时创建多少个协程。 :D 作为旁注,可能有多个这样的搜索同时运行。

我可以为每次此类搜索创建数百万个协程(每个项目一个)吗?我应该决定每个协程的一些工作负载(例如每个协程 1000 个项目)吗?我还应该决定协程数量的上限吗?

我对协程及其实际工作原理有粗略的了解,但是,我不知道此功能的性能限制是什么。

谢谢!

最佳答案

协程的内存权重随着从协程构建器 block 到挂起点的调用跟踪的深度而变化。每个 suspend fun 调用都会将另一个 Continuation 对象添加到链接列表中,并且在协程挂起时会保留该对象。一个 Continuation 实例的粗略数字是 100 字节。

因此,如果调用跟踪深度为 5,则每个项目相当于 500 字节。一百万个项目相当于 500 MB。

但是,除非您的搜索代码涉及会使线程空闲的阻塞操作,否则您不会从协程中获得任何内容。您的任务看起来更像是数据并行性的一个实例,您可以使用java.util.stream API非常有效地解决它(如用户marstran在评论中所述) )。

关于kotlin - 多少个协程就太多了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55237267/

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