Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature] 改进本地 mod 浏览体验:缓存 mod 信息、取消更新检查 #45

Open
1 task done
LLLingMo opened this issue Nov 27, 2021 · 6 comments
Open
1 task done
Assignees
Labels
enhancement New feature or request performance

Comments

@LLLingMo
Copy link

What new features do you want? (你想要什么新功能)

  1. 缓存 mod 信息 当前加载时好像需完整解压每个 mod 文件,这很慢。尤其是一些 mod 文件较大(如贴图多)和 mod 数量多时明显。比如这里 1600 个 mod (~3G) 加载了近 5 分钟。如果能只解压需要的文件会改善很多;如果不能,建议把用到的信息首次加载后就存到个 json 中,下次启动直接加载它;只有当更新/回滚该 mod、手动刷新列表等时才校验 mod 文件中信息与 json 是否相同。现在本地浏览性能差,这个与渲染(这里耗时 ~1 分钟渲染,期间程序无响应)需要优化。
  2. 取消更新检查 现在加载完之后自动执行更新检查,但是有时卡到一个 mod 就不动了。建议允许取消更新检查操作并且允许更新已经检查过有更新的 mod。

Additional context (额外说明)

一个文件夹有1600多个 mod 的原因
硬盘是 NTFS 的。通过程序辅助(或许以后的这),把这些 mod 中所需要的添加到剪贴板,只需要在目标 mod 文件夹简单地右键创建软链接即可。这样能节省许多磁盘空间。

This issue is unique (这个issue是唯一的)

  • I have searched the issue tracker and did not find an issue describing my request.
@LLLingMo LLLingMo added the enhancement New feature or request label Nov 27, 2021
@kaniol-lck
Copy link
Owner

  1. 尝试过预解压文件,但似乎性能并没有太大的差异。性能可能主要消耗在图片加载的方面,后续会优化一下动态载入mod图片
  2. 在 偏好设置 > 本地 > 更新 中将“更新检查间隔”设置为 “从不“ 就不会自动执行更新检查了
  3. 软链接在 [Suggestion] Improve UI #11 中有提到

@kaniol-lck kaniol-lck self-assigned this Nov 27, 2021
@kaniol-lck
Copy link
Owner

2. 但是有时卡到一个 mod 就不动了。

这个在 #41 中修复了

@LLLingMo
Copy link
Author

LLLingMo commented Nov 27, 2021

  1. 不知道预解压指什么? 我想第一次加载时和现在一样,逐个解压,但这时要把 mod 文件里用到的内容如 mcmod.info 写入一个 json 中,以后每次启动只读取这个 json 而不去解压每个 mod 文件。如果做软链接功能,则一个目录下也会有很多 mod,甚至大小会上G(我这里已经3G了),读一个几十几百k的文本和几个g的文件速度应该很大不同。是我没描述清楚:原文1中说了两个问题,一个是读取mod文件,另一个是读取完mod文件后渲染;上面说的是对第一个问题的想法;2说的是渲染完了后开始检查更新的问题
  2. 这里依然卡在 1298/1463 个 mod。下的是(截至编辑) 41mins ago 的action构建;发 issue 时用的是(截至编辑) 5hours ago 的构建:都卡在某个 mod。已经等待 5 分钟。我指的取消更新检查是说已经开始检查,有mod尚未检查完,要取消这个过程(但还可以更新已经检查了的mod)。也是我没描述清楚。

@kaniol-lck
Copy link
Owner

  1. 不知道预解压指什么? 我想第一次加载时和现在一样,逐个解压,但这时要把 mod 文件里用到的内容如 mcmod.info 写入一个 json 中,以后每次启动只读取这个 json 而不去解压每个 mod 文件。如果做软链接功能,则一个目录下也会有很多 mod,甚至大小会上G(我这里已经3G了),读一个几十几百k的文本和几个g的文件速度应该很大不同。是我没描述清楚:原文1中说了两个问题,一个是读取mod文件,另一个是读取完mod文件后渲染;上面说的是对第一个问题的想法;2说的是渲染完了后开始检查更新的问题

预解压就是吧所有mod解压成文件夹,在文件夹中索引而非在mod文件夹中索引(因为只是粗略测试一下,所以保留文件结构的方式比较简便),对于mod文本方面的信息缓存整合是能提升性能,也会在之后进行实现,不过这方面的性能消耗应该比不过图标渲染层面的消耗。

这里所指的渲染具体是指什么呢?mod列表的显示吗

这里依然卡在 1298/1463 个 mod。下的是(截至编辑) 41mins ago 的action构建;发 issue 时用的是(截至编辑) 5hours ago 的构建:都卡在某个 mod。已经等待 5 分钟。我指的取消更新检查是说已经开始检查,有mod尚未检查完,要取消这个过程(但还可以更新已经检查了的mod)。也是我没描述清楚。

这看起来很糟糕,我还得去继续找一下问题(虽然我这里似乎已经不会出现卡住的情况了)

@LLLingMo
Copy link
Author

所指的渲染具体是指什么呢?mod列表的显示吗

是。
读完了 mod 文件,因把它们在 ui 上显示出来这不异步,所以无响应,1600 mods 的时候可持续 1 分钟以上无响应

@kaniol-lck
Copy link
Owner

读完了 mod 文件,因把它们在 ui 上显示出来这不异步,所以无响应,1600 mods 的时候可持续 1 分钟以上无响应

了解了,这个马上就会去优化
(不过这倒跟异步没关系,因为界面绘制只能运行在主线程)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request performance
Projects
None yet
Development

No branches or pull requests

2 participants