Flow 性能:16. 流的默认执行性能分析

本篇解析 example-flow-16.kt。探讨在没有优化的情况下,Flow 的执行效率问题。

1. 核心问题:串行执行的开销

默认情况下,Flow 的发射和收集是串行的。

  • 发射端:每 100ms 产出一个。
  • 收集端:每处理一个需要 300ms。

执行时间计算:

由于是串行,处理一个元素的总耗时 = 发射耗时 + 收集耗时 = 100ms + 300ms = 400ms。
处理 3 个元素总共需要:400ms * 3 = 1200ms

2. 开发者感悟

在数据量较小或两端速度都很快时,这种串行模式没有问题。但如果收集端涉及复杂的 UI 渲染或 IO 写入,而发射端又是高频产生的,这种串行模式就会导致严重的性能瓶颈。我们需要一种“并行”机制。

,