Java - 自定义绘制声明性能

时间:2011-12-02 03:29:44

标签: java performance swing graphics2d

快速是,不,或者它并不重要:

我正在覆盖抽象按钮的paint方法,我想知道是否正在执行

GradientPaint gp = new GradientPaint(0, 0, color1, 0, h, color2);
RoundRectangle2D r = new RoundRectangle2D.Float(0, 0, w, h, w/5, h/5);

和类似的方法会影响性能vs

GradientPaint gp;
RoundRectangle2D r;

外部涂料然后

gp = new GradientPaint(0, 0, color1, 0, h, color2);
r = new RoundRectangle2D.Float(0, 0, w, h, w/5, h/5);

在paint方法中

3 个答案:

答案 0 :(得分:4)

Jeremy怎么样?

不是你要问的,但最快的可能是在BufferedImage中进行一次绘制,然后在paint(或者更好的paintComponent)方法中显示BufferedImage。

答案 1 :(得分:4)

实例化一次或必要时(例如尺寸更改)而不是多次。

答案 2 :(得分:2)

在测量问题之前,寻找最易维护的解决方案: - )

每个“优化”都需要额外的逻辑(又名:LOC)。每条额外的生产线都有 - 难以预测 - 维护价格。我的一般规则是它不会增加不可估量的成本。

BTW:无论如何你都不能做你的第一个选项,渐变是不可变的 - 所以你必须在每次改变大小时重新创建。