其实我就搞不懂了,同样是在一个线程里面,为何定时器中断检测要比每次循环自检要来的靠谱?今天在Qt的Q-Label里面算是见识到了
可能涉及到具体的底层原理(不明觉厉),只是今天测试GUI程序的时候突然很卡(Q-Label显示层面),查了一上午问题才知道是控件检测问题(只有一行代码差异,竟如此之大)
def CHECK_RATIO_BUTTON_INIT(self): self.MODE_CHECK.addButton(self.CAISEXIANSHI, 0) self.MODE_CHECK.addButton(self.HUIDUXIANSHI, 1) # self.MODE_CHECK.setId(self.CAISEXIANSHI, 0) self.CAISEXIANSHI.setChecked(True) def CHECK_RATIO_BUTTON_RESPONSE(self): if self.MODE_CHECK.checkedId() == 0: self.flag_check_id_ratio_button = 0 else: self.flag_check_id_ratio_button = 1 def RATIO_TIMER_CHECK(self): self.TIMER_FOR_RATIO_CHECK.timeout.connect(self.RATIO_TIMER_INTER) self.TIMER_FOR_RATIO_CHECK.start(5) def RATIO_TIMER_INTER(self): self.CHECK_RATIO_BUTTON_RESPONSE()
配合全局标志位,进行控件的选中OR内容自检等比较靠谱,如果在单线程里面塞入太多的检测代码,程序可能会非常卡顿
关于浮点数:
之前没注意,昨天修代码的时候突然给我整了一个措手不稽,double双转换竟然拖慢程序达到十几倍乃至几十倍(25帧每秒下降到3帧每秒)
感觉一旦考虑到程序优化和效率问题(虽然平时写代码没觉得,但是处理数据量上来的时候会很麻烦),鲁棒性和时间、空间复杂度都要考虑,没有软工的加持感觉不行,好在当年辅修了50多个学分,妙啊!