Skip to content

perf(danmaku): 弹幕渲染优化 — 卸主线程+预缓存+预加载窗口#66

Merged
Colorful-glassblock merged 2 commits into
developfrom
opt/danmaku-load-speed
May 13, 2026
Merged

perf(danmaku): 弹幕渲染优化 — 卸主线程+预缓存+预加载窗口#66
Colorful-glassblock merged 2 commits into
developfrom
opt/danmaku-load-speed

Conversation

@Colorful-glassblock
Copy link
Copy Markdown
Owner

配合 PR f87ea00 同时完成一套弹幕渲染优化。

root added 2 commits May 10, 2026 12:10
- getReleases() 原逻辑将 targetCommitish 与字符串 "develop" 直接比较,
  targetCommitish 实际存储的是 commit SHA,恒不匹配,导致 filter 永远返回空
- 新增 getAllReleases() 负责纯 API 拉取,getBranchHeadSha() 解析分支 HEAD SHA
- getReleases() 改用与 getBranchHeadSha(CURRENT_BRANCH) 的比较结果过滤
- 分支 HEAD SHA 解析失败时降级(不分支过滤),避免网络异常直接炸
- getLatestPreReleaseBuild() 加 page <= 10 上限防止极端情况无限循环
三处改动均针对 VideoPlayerV3ViewModel(单文件):

负载降低:loadDanmaku 将 XML 解析 + 10万条目映射 + groupBy 全量
移入 Dispatchers.Default,主线程只做一次 swapList(3万) + updateData(1次)

注释持久化:预备 milliSeconds 分段缓存直接存 Map<Long,List<DanmakuItemData>>,后续分段切分 map轉 value 从 dataList 的直接引用取得,不重 repeat

加载专精:loadDanmakuSegment 构建新 List 的工作全部迁到 Default,不与读写
切换空闲。updateDanmakuForPosition 预加载条件由 > 改为 >=,提前一整个地区
段(60s) 触发预读,边界前先于用户抵达即可。
@Colorful-glassblock Colorful-glassblock merged commit 6399a9d into develop May 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant