解决一次时间复杂度
解决一次时间复杂度
本问题导致多个异常现象,包括但不限于
- ANR
- 崩溃
- mqtt处理缓慢与异常
- 主线程事件堆积
场景还原
- 首先消息传输协议采用的是mqtt消息流式传输,消息数量并不固定
- 目标:每次收到连续的消息后处理已有的全部消息,并解析出恰当数据,从而向上更新到UI
正确实现
- 假设有n条消息,且每条消息都会稳定收到
- 则:从0号消息一直获取到n-1号消息后,应当一共处理n次。此时,时间复杂度是O(n)
错误实现
- 假设有n条消息,且每条消息都会稳定收到
- 则:从0号消息,再到获取n-1号消息后
- 获取到0号消息时:
- 处理0号
- 获取到1号消息时:
- 处理0号
- 处理0,1号
- 获取到2号消息时:
- 处理0号
- 处理0,1号
- 处理0,1,2号
- 获取到3次消息时:
- 处理0号
- 处理0,1号
- 处理0,1,2号
- 处理0,1,2,3号
- 此时,时间复杂度是O(n²)
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.