Rehcramon / MasterDuelCardTranslator

A tool for translating card details in Yu-Gi-Oh! Master Duel.
GNU General Public License v3.0
63 stars 15 forks source link

看起来有点占用cpu资源 #3

Closed oooldtoy closed 2 years ago

oooldtoy commented 2 years ago

看起来是因为循环截屏识别导致的,而且循环时间是50ms?

是否可以只在点击屏幕后进行几次屏幕识别(因为一般切换卡片都需要点击屏幕),降低资源的占用呢。

Rehcramon commented 2 years ago

这是个好主意,我考虑一下。

目前写死循环而不使用鼠标行为的原因在于:

  1. 实现简单。这个是出于我自身水平的考虑,因为监听鼠标行为需要使用超出我当前能力的知识,可能需要更多时间来学习与评估安全性。
  2. 对长卡名支持更好。长卡名一次截图只能截取一部分,连续截图会让长卡名的拼接变得更加简单。
  3. MD提供了自动显示卡片信息的功能,我喜欢开启这个功能。这个功能开启后,即使鼠标没有操作,对面在说书的时候我也能看到卡片信息。

但是实际上这些原因:

  1. 并不重要。
  2. 目前MDCT有着判断长卡名的功能,全局变量cardname_buffer_status为True时认为是长卡名从而进行拼接。
  3. 可以手动设置。

所以实际上我觉得是可以做的。但是因为还有其他一些比较重要的功能要更新,降低资源占用的优先级确实会低一点。

Rehcramon commented 2 years ago

目前来看,在现在的版本中,即使不这样做,CPU占用的资源也不是很夸张了。

我在调试的时候记录的数据: 游戏本身占用20%左右的CPU; Visual Studio + Python共同占用5%左右的CPU。

所以就不这样修改了。待之后有需要再考虑进一步的优化。感谢反馈。