模块‘提示消息’,如果被停用,将很大程度拖慢进程速度?(相比不停用)

动作开发 · 1014 次浏览
craming 创建于 2023-05-04 20:59

这个不晓得是设计本就如此,还是某个‘bug’。

情况是这样的,如下图,我反复测试了十几次。发现:

运行同样的任务,

如果我把‘提示消息’这个模块停用掉,然后运行,需要大概40几秒完成。

如果我把‘提示消息’这个模块取消用掉(让他运行),然后运行,需要大概16秒完成。

 

是本就设计如此么?‘提示消息’这个模块停用掉之后反而拖慢了整个程序的速度?

 

CL 最后更新于 2023/5/4

回复内容
craming 2023-05-04 20:59
#1

如果我把‘提示消息’这个模块取消停用(让他运行),然后运行,需要大概16秒完成。

craming 2023-05-04 21:03
#2

很诡异诶

我刚刚又测试了一下,我把‘提示消息’这个模块删掉,然后运行,整个过程需要40几秒。

我再把‘提示消息’这个模块加回去,然后运行,整个过程需要16秒。


减少一个‘提示消息’模块,反而增加20几秒的耗时。为啥啊

CL 2023-05-04 21:18
#3

不确定什么情况的时候,右键调试运行,看看每个步骤的时间

craming 2023-05-04 21:23
#4

这是停用的时候的运行日志

craming 2023-05-04 21:30
#5

这是取消停用‘提示消息’的时候的运行日志。看到了结果,看不出原因。

CL 回复 craming 2023-05-04 21:50 :

从头开始找,看看从哪个步骤开始的

craming 回复 CL 2023-05-04 21:56 :

shanle

craming 最后更新于 2023-05-04 22:04
craming 回复 CL 2023-05-04 22:01 :

我已经从头找过了。结论是:整体的耗时,比较均匀地,在各次循环中,产生了差异。

换句话说,只要是保留了‘提示消息’模块的运行的,那么,在这个模块之外的模块的运行过程中(他们被循环运行),统一地都比较快。


这个很诡异。我是不能理解它的。对我来说,我之所以重视,有一大半是好奇,一小半是因为对我后续的使用有影响。

同时,个人希望大神能重视和解决他。从我目前反复测试来看,只能理解为是程序本身某处存在问题。这个问题,导致程序在运行中出现本部必要的耗时,而且这个耗时很大,占比超过总耗时的一半以上。



CL 回复 craming 2023-05-04 22:02 :

我也不能理解😂 看看两次运行CPU、内存占用情况。 如果内容不涉及隐私信息,可以点调试文件里的上传,得到网址后把网址发我qq 邮箱197906

craming 回复 craming 2023-05-04 22:03 :

这个链接里,有一个录屏。是我刚刚做了4次调试运行的过程的录屏。在录屏里能够看到,仅仅是关闭或打开了消息提示,而不作任何其他修改,就重现了前面提到的问题。且做了反复测试,结果相同。

随同录屏,附上了其中3次的运行日志,以及qka文件,以及过程中用到的xlsx文档。

盼重视和解决

craming 回复 CL 2023-05-04 22:05 :

所有数据已发QQ邮箱

craming 回复 CL 2023-05-04 22:13 :

不会是CPU之类的硬件问题,前后测试了大概20次了,都是统一的结果。

用过两台电脑测试,结果相同


CL 回复 craming 2023-05-04 22:15 :

会不会是因为显示提示的时候因为需要更高性能,所以CPU频率加速比较多? 感觉有点走近科学的意思了。

另外动作要分享或动作右键导出一下,导出步骤的话因为有共享子程序我这里使用不了。

CL 回复 craming 2023-05-04 22:20 :

另外可以试试循环间隔时间改成0. 这个时间是不准的,windows定时器不是实时的,有可能1-15ms之间。


craming 回复 CL 2023-05-04 22:35 :

已共享https://getquicker.net/Sharedaction?code=67c245a1-d5cb-472c-6acd-08db4c6b3ac9

同时json文件已发到QQ邮箱



应该不是硬件原因。我的两台电脑,一台是笔记本,一台是台式机。一台是因特尔处理器,一台是AMD处理器,运行耗时结果几乎相同,持续且稳定。

craming 回复 CL 2023-05-04 22:38 :

试了把循环间隔改成0。

结果没变化

CL 回复 craming 2023-05-04 22:39 :

改成0测试了么?所有循环步骤里的循环间隔,我感觉会有不同的结果

CL 回复 craming 2023-05-04 22:41 :

子程序里也要改0. 运行时间一共1秒多。


craming 2023-05-04 22:53
#6

我的问题解决了,感谢~(我在子程序里,也改了0。之后,不论是不是运行消息提示,都只需要0.9秒左右完成整个动作)

还需要问一下:这里改成0之后,由于循环内没有其他‘等待时间’的步骤,会导致运行出错不?


看来,之前,循环内的1ms的延时与循环外的“消息提示”,二者之间应该是存在某种影响,导致了异常。

CL 回复 craming 2023-05-04 23:03 :

顺序执行不会导致出错。循环间隔一般用在持续循环的情况,很快运行结束的,不涉及界面的通常不需要。

craming 回复 CL 2023-05-04 23:06 :

明白了,感谢

tkk 2023-05-05 09:44
#7

所以延时和消息提示之间是什么影响?

CL 回复 tkk 2023-05-05 10:19 :

提示消息的显示,影响了windows中Sleep(1)的表现,造成了延迟时间更大一些。 将延迟去掉之后就正常了。

ORYS 回复 CL 2023-05-05 10:42 :

想起来个与问题无关的小建议: 提示消息模块可否加一个显示时间的参数, 因为有时候要显示的内容挺多, 默认时间内大概率阅读不完

CL 回复 ORYS 2023-05-05 11:31 :

这个要堆叠显示,没法控制时间。 可以找一下子程序,比如这个:https://getquicker.net/SubProgram?id=a953ee39-05b1-440e-a7b5-08d97fc56787 

回复主贴