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

[0.4.3.3-chs-alpha2.2.0] 采用新的本地化方式后会与一些翻译类插件冲突产生性能问题 #203

Closed
4 tasks done
Minaduki-Shigure opened this issue Nov 18, 2023 · 11 comments
Labels
😵question 非问题反馈和汉化改进 🤨unable2rep 在存档中无法复现

Comments

@Minaduki-Shigure
Copy link

在提问之前...

  • 我理解 Issue 是用于反馈和解决问题的,而非吐槽评论区,将尽可能提供更多信息帮助问题解决
  • 我填写了简短且清晰明确的标题,以便开发者在翻阅 issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
  • 我已查看最新发布版本的更新内容,并未提及该 bug 已被修复的情况
  • 我在标题开头写明了当前使用的版本号,比如 [0.4.2.7-chs-alpha4.0.0]

问题描述

在项目采用了新的本地化方式后,使用Mod方式加载本地化文件会有较为明显的性能问题,具体表现为卡在[i18n] Loading ... 90两分钟左右,其间CPU高占用。
在Windows 10/11上的Edge、Ubuntu 20.04的Firefox和iOS上的Safari进行了测试,均可以复现此问题。

存档 / 代码

N/A

截图

image

还有别的吗?

我并非反对采用新的本地化方式,我也明白原先的本地化方式存在着很大的问题和开发困难,但是相比原先,新的本地化方式确实存在较为严重的、难以忽视的性能问题。我想了解是否有能够优化Mod载入过程的方法,使得加载时间能够维持在一个相对合理的范围之内?谢谢!

@Minaduki-Shigure Minaduki-Shigure added the 😡bug 在正常游戏流程中不该出现的问题 label Nov 18, 2023
@NumberSir NumberSir added 🤨unable2rep 在存档中无法复现 😵question 非问题反馈和汉化改进 and removed 😡bug 在正常游戏流程中不该出现的问题 labels Nov 18, 2023
@NumberSir
Copy link
Collaborator

image
无法复现,请尝试使用当前最新的构建版 ModLoader汉化包 ,看看是否还有这个问题

@EndlessNull
Copy link

不知道有沒有關聯性,Firefox開啟遊戲需要5GB的記憶體,並且之後一直保這麼多,Chrome沒這問題

2023-11-18 22:24:38-ScreenshotByFFmpeg
圖中是瀏覽器的工作管理員

@Minaduki-Shigure
Copy link
Author

我用同学的电脑进行了一些对比,我发现实际情况似乎更为复杂一些。
在看到回复的时候,GitHub pages已经更新了[0.4.3.3-chs-alpha2.2.1]版本,因此以下的所有内容均为此版本的“普通模式”测试结果。

我发现不同的平台在加载mod的时候有显著的性能区别,不仅如此,不同的浏览器也会带来区别,下面所列举的时间都是从本地化mod下载完毕到游戏界面完全显示需要的时间:

  • 在一台13900K的台式电脑上,使用chrome需要10-12s的加载时间,使用edge需要15-18s的加载时间,加载时CPU占用几乎无可见波动。
  • 在一台12400的台式电脑上,使用firefox需要30-35s的加载时间,期间firefox的CPU占用约在18-20%之间,使用edge需要1min50s的加载时间,其间edge的CPU占用在20%左右浮动。
  • 在一台7840HS的笔记本(插电)上,使用chrome需要13-15s的加载时间,加载时CPU占用几乎无可见波动。
  • 在一台5900HS的笔记本(未插电)上,使用chrome需要20s左右的加载时间,使用edge需要40s左右的加载时间,未观测CPU占用。
  • 在一台小米14上,使用chrome需要25s左右加载时间,未观测CPU占用。

而相对的,我自己的设备都比较古老,因此加载时间更长,而且CPU占用更高,但是加载时间的增长并不线性,因此我依然怀疑存在性能问题,可能是针对特定平台的bug,我自己的设备如下:

  • 一台9600KF的台式电脑,使用chrome需要23s加载时间,期间chrome的CPU占用大概在27-33%之间,使用edge需要逆天的2min30s,期间edge的CPU占用在20-25%之间。
  • 一台1135G7的笔记本,使用edge需要2-3min,期间edge的CPU占用在25-40%之间。
  • 一台iPhone 13 mini,使用Safari需要54s。
    需要指出的是,与[0.4.3.3-chs-alpha2.2.0]版本不同,[0.4.3.3-chs-alpha2.2.1]版本的加载会卡在[i18n] rebuilding ...[i18n] replace end.

根据这些数据,我怀疑这些性能问题更可能是关于edge的一些platform-specific的问题,也许没有办法很轻松的解决,甚至可能根本不可能只通过在游戏这边的社区力量解决,但是THEY DO EXIST

我明白这比较令人困惑,因为这个性能问题看起来确实比较难以在不同的平台上复现,因此下面是一段屏幕录制,展示了在1135G7的笔记本上游戏加载的全过程:
https://mega.nz/file/WZgikR6I#B0UzGN2gGO9iGj9GeDngQje4IfwXX9ejh5xZYN5geCY

感谢您的耐心。

@Minaduki-Shigure Minaduki-Shigure changed the title [0.4.3.3-chs-alpha2.2.0] 采用新的本地化方式后存在较为显著的性能问题 [0.4.3.3-chs-alpha2.2.0] 采用新的本地化方式后在部分平台存在较为显著的性能问题 Nov 20, 2023
@Minaduki-Shigure
Copy link
Author

在上一条发出后,我发现Github pages的版本已经更新为了[0.4.3.3-chs-alpha2.2.2-pre],我在自己的两台电脑上又进行了测试,现在两者的加载时间都在2min35s左右,CPU占用率不变。

@Lyoko-Jeremie
Copy link

@Minaduki-Shigure

需要指出的是,与[0.4.3.3-chs-alpha2.2.0]版本不同,[0.4.3.3-chs-alpha2.2.1]版本的加载会卡在[i18n] rebuilding ...或[i18n] replace end.

这个我有看到,你可以尝试在加载过程中开一下性能分析

这是没有i18n的样子
图片

这是i18n之后的样子
图片

其中,和i18n的字符串替换相关的耗时在这里
图片

而后面这一长段全部都是 css重排
图片
如果根据定位的话,这一段应该是由ModuleCssReplacer在修改css导致的。

因为i18n需要替换其中的三个内容
图片

我认为这个地方或许触发了浏览器的某种缺陷,并且很有可能是浏览器工作原理上的设计缺陷。

Lyoko-Jeremie added a commit to Lyoko-Jeremie/Degrees-of-Lewdity_Mod_i18nMod that referenced this issue Nov 20, 2023
use css-base-i18n-fix.css to fix prefomance issue
Eltirosto/Degrees-of-Lewdity-Chinese-Localization#203
@Lyoko-Jeremie
Copy link

或许可以用css覆盖的方式来实现所需的功能
ok 改好了 Lyoko-Jeremie/Degrees-of-Lewdity_Mod_i18nMod@f405f27

@Lyoko-Jeremie
Copy link

Lyoko-Jeremie/Degrees-of-Lewdity_Mod_i18nMod@f405f27

改过之后内存好像也下去了

@Minaduki-Shigure
Copy link
Author

在看了性能分析之后,我发现我犯了一个非常愚蠢的错误。

我之前甚至一度怀疑到性能问题是否和AVX512指令集有关,因为Intel在12代之后ban了AVX512,而我的两台电脑都具有AVX512,但是Chrome的测试证明Chrome并没有性能问题,因此我转而怀疑Edge和Safari在JS引擎方面是否有所魔改。然而我一直没有做的,就是在无痕模式而非用户配置下进行测试。

image

性能分析的结果显示一个匿名的函数调用占据了绝大多数的处理时间,而非游戏或者ModLoader。所以虽然改成Mod本地化后,加载确实慢了一些,但是慢了这么多,就完全是我自己的错误导致的了。

结果显而易见,是因为一个翻译用的浏览器拓展。我长期以来用Edge作为主力浏览器,因此我只在Edge(和手机的Safari)里面安装了这个翻译插件。翻译插件会监视新增的element并作出反应,这是我应当能够想到的,然而我对自己的第一判断太过自信,以至于忽略了这个最大的应当控制的变量,实在是贻笑大方了。

谢谢汉化组的各位提供的帮助和指导,也非常感谢大佬们的耐心,很抱歉浪费了大家宝贵的时间 : (
我会努力下次不犯弱智错误 XD

@Minaduki-Shigure Minaduki-Shigure changed the title [0.4.3.3-chs-alpha2.2.0] 采用新的本地化方式后在部分平台存在较为显著的性能问题 [0.4.3.3-chs-alpha2.2.0] 采用新的本地化方式后在会与一些翻译类插件冲突产生性能问题 Nov 20, 2023
@Minaduki-Shigure Minaduki-Shigure changed the title [0.4.3.3-chs-alpha2.2.0] 采用新的本地化方式后在会与一些翻译类插件冲突产生性能问题 [0.4.3.3-chs-alpha2.2.0] 采用新的本地化方式后会与一些翻译类插件冲突产生性能问题 Nov 20, 2023
@Lyoko-Jeremie
Copy link

既然这样那看来可以考虑什么时候改成用shadow dom的方案,避免频繁增减node

@EndlessNull
Copy link

不知道有沒有關聯性,Firefox開啟遊戲需要5GB的記憶體,並且之後一直保這麼多,Chrome沒這問題

2023-11-18 22:24:38-ScreenshotByFFmpeg 圖中是瀏覽器的工作管理員

目前看來這問題也消失了,現在是1G
不過Firefox的部份應該不是插件問題,我記得我有拿乾淨的環境測過

@Lyoko-Jeremie
Copy link

不過Firefox的部份應該不是插件問題,我記得我有拿乾淨的環境測過

Firefox 有可能是GC的问题,i18n创建了太多string和node。看性能分析,感觉Firefox的GC比较保守,有可能是这个原因。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
😵question 非问题反馈和汉化改进 🤨unable2rep 在存档中无法复现
Projects
None yet
Development

No branches or pull requests

4 participants