【发布时间】:2012-06-06 11:22:06
【问题描述】:
我正在开发一个包含很多组件的大型(至少对我而言)gui。启用规则背后有一些相当复杂的机制(意味着必须根据其他组件的状态启用/禁用哪个组件)。每次我更新整个用户界面时(这并不经常但有时是必要的,例如在加载设置文件之后),我必须通过规则集来设置每个组件。我基本上做的是以下几点:
meaningfulName1.setEnabled(conditionForMeaningfulName1());
meaningfulName2.setEnabled(conditionForMeaningfulName2());
meaningfulName3.setEnabled(conditionForMeaningfulName3());
// etc
我问自己这样做是否有意义。
boolean temp = conditionForMeaningfulName1();
if (meaningfulName1.isEnabled != temp) meaningfulName1.setEnabled(temp);
temp = conditionForMeaningfulName2();
if (meaningfulName2.isEnabled != temp) meaningfulName2.setEnabled(temp);
temp = conditionForMeaningfulName3();
if (meaningfulName3.isEnabled != temp) meaningfulName3.setEnabled(temp);
// etc
其背后的想法是,如果状态已经是所需的状态,它可以节省一些性能而不设置标志,从而节省一些图形更新(以及函数调用)。
您认为这在大规模上有意义还是根本没有节省任何时间并且只会降低代码的可读性?
【问题讨论】:
-
好吧,我突然想到,我可以在 JComponent.java 中查找它,实际上图形更新
repaint();仅在状态更改时才会触发。所以我想不会有任何加速。如果有人对此有异议,请发表答案,否则我将在几天后自己做出答复。 -
“它根本不会节省任何时间” 我怀疑不会,但最好用分析代替怀疑。
标签: java performance swing