Zzaphkiel / Seraphine

英雄联盟战绩查询工具
GNU General Public License v3.0
2.24k stars 114 forks source link

关于打开软件掉帧的事情 #127

Closed arrrrre closed 12 months ago

arrrrre commented 1 year ago

经过测试打开软件在游戏中大约会降50帧率 希望可以优化一下

Hpero4 commented 1 year ago

@arrrrre 感谢反馈.

帧率不是判定性能占用的准确指标, 我们需要更多信息以定位问题.

请问不开软件时, 您的游戏帧率是多少?

在任何场景下(团战、战争迷雾), 只要软件打开, 帧率就会相较于不开降低50帧左右吗?

您是在游戏进行到一半时打开软件, 发现出现了短时间的掉帧问题吗?

arrrrre commented 1 year ago

在我玩的时候是锁144的 然后打开软件后会到90 然后我在训练场试验 让帧率不封顶 等帧率稳定测试 打开软件与不打开软件也是差的50帧左右 我是分别在打开软件和不打开软件分别测试的

Hpero4 commented 1 year ago

@arrrrre 感谢反馈!

我同步测试下, 请问是先进游戏再开软件还是先先开软件再进游戏?

后续我们也会关注性能相关问题, 尝试进行一些优化.

arrrrre commented 1 year ago

先开软件 再进游戏

ilpoint commented 1 year ago

我也发现这个软件很吃CPU,在看战绩页面滚动两下持续占用10%CPU,比EDGE都厉害。在其他设置页面只占用不到1% CPU 微信图片_20231102003312

Hpero4 commented 1 year ago

@ilpoint 感谢反馈!

请问复现情况稳定吗?

我简单测了下, 战绩查询和设置页面的cpu占用都在0%~5%之间, 浮动不会太大. (查询页面时占用还普遍低些)

如果是运行的是编译打包后的程序, cpu占用稍高是正常的, 因为资源文件和依赖库都需要释放和加载

如果是刚打开软件进行的测试, 可以稍等十几秒, 等CPU占用稳定下来再测试看看

您愿意话也可以留下您测试时的电脑配置, 以便我们更好的定位问题.

ilpoint commented 12 months ago

@Hpero4 在查看别人或者自己战绩主页CPU占用高,是持续占用CPU高。点进详情页占用正常。 不给软件最小化在这个页面持续占用高,最小化或者点到别的界面可以。应该是有bug, 不然点去看别人战绩主页又切回去打游戏还一直在后台占用CPU,比wegame都厉害😓 屏幕截图 2023-11-05 031011 用火绒剑可以看到在不停查询英雄联盟有没有启动? 点进详情页占用正常 屏幕截图 2023-11-05 032008

配置信息: 处理器 AMD Ryzen 7 5700X 8-Core Processor
机带 RAM 16.0 GB

Hpero4 commented 12 months ago

@ilpoint

感谢测试!

以上问题已在最新的pr #136 中给到了解决方案, 后续将通过设置页添加一个选项, 用户可以自行选择是否在游戏进行中将软件最小化以降低UI绘制所带来的CPU占用率😉

关于您提到生涯页仍在的轮询客户端是否启动这一点我们后续也会关注, 若定位到该逻辑导致CPU异常占用我们也会尝试优化. 这部分代码可能需要与 @Zzaphkiel 一起看看.

如您在后续使用过程中遇到问题, 欢迎提出~ 再次感谢您的测试数据!

Hpero4 commented 12 months ago

@ilpoint

经测试, 生涯页存在异常的CPU占用, 我们正在定位该问题, 它或许与某个控件的绘制有关

该问题最早可以追溯到 release v0.3.0 版本(再早的打不开生涯页了)


11.5 更新

目前定位到有2个控件在绘制时会导致CPU占用异常:

1. RoundLevelAvatar

召唤师头像(RoundLevelAvatar)控件绘制时, 会调用经验条(ProgressArc)的setVal方法, 该方法触发了父控件重绘, 导致无限递归; 该问题在早期不带Level显示的头像控件中也存在. 并且, 由于对局信息页也使用了该控件, 所以也存在同样的CPU异常占用问题

image

相关代码: https://github.com/Zzaphkiel/Seraphine/blob/8223eb11f44dbcfa58a3c139b0c61a5340c47e5b/app/components/profile_level_icon_widget.py#L74-L76

2. GameInfoBar

该控件在绘制时也会导致CPU异常占用, 根因是英雄头像右下角的等级小图标在绘制时会更新stylesheet, 同时stylesheet会触发空间重绘, 导致无限递归.

image

相关代码: https://github.com/Zzaphkiel/Seraphine/blob/8223eb11f44dbcfa58a3c139b0c61a5340c47e5b/app/components/game_infobar_widget.py#L37-L37

该问题将会在 #136 中一并解决

Zzaphkiel commented 12 months ago

目前库中代码已修复该问题,随下 release 版本发布