本篇解析 example-flow-17.kt。学习如何通过缓冲机制实现并发执行。
1. 核心操作符:buffer()
buffer() 会在发射端和收集端之间创建一个缓冲区。
工作原理:
- 并发执行:发射端不再等待收集端处理完,而是持续产出并放入缓冲区。收集端则不断从缓冲区拿数据处理。
- 底层实现:它会在后台自动切换协程,类似于
flowOn。
2. 性能提升分析
- 发射时间:3 * 100ms = 300ms。
- 收集时间:3 * 300ms = 900ms。
- 由于并发:收集端在等待第一个元素时,发射端已经开始准备第二个了。
- 总耗时:第一个元素产生 (100ms) + 收集 3 个元素 (900ms) ≈ 1000ms。
- 对比之前的 1200ms,节省了明显的等待时间。
3. 开发者感悟
buffer 是提升 Flow 处理效率的利器。如果你的数据生产和消费都很耗时,加上 buffer() 能显著减少用户的整体等待时间。