当前位置: 代码迷 >> 综合 >> 关于drawChar 与 drawString 的性能比较
  详细解决方案

关于drawChar 与 drawString 的性能比较

热度:14   发布时间:2023-12-09 07:52:08.0

下面来看看我对这方面的实际应用的结果对比

一。首先明确下,什么时候用drawChar,什么时候用drawString

当String 的内容不多的时候,drawChar跟drawString是差不多的。下面看看代码吧。

 //看看这段代码跟下面那段代码的性能比较,发现如果采用这段代码性能比下面那段代码要搞3倍
IR!V \CRp?-A3               StringBuffer sb = new StringBuffer();
!pa r8fPX5w%[2u o3  for(int i=0; i<chars.length; i++){
l@-s$n.Z9J3   int fontWidth = font.charWidth(chars[i]);3G视线 y x(aV1c,?,|7zu
   width += font.charWidth(chars[i]);
G yc\W,Jw3   if(width >= Platform.WIDTH -  font.charWidth(chars[i]) - 6){ 3G视线 }.A D[Q\u(P
    width = 0;3G视线R5Ay)ou9Vj]
    startX = 0;
L1lg Wf O{&p$?3    startY += this.font.getHeight() + Part.SPACE;3G视线)u?v6z0s;s` g^
                                sb.append(chars[i]);3G视线2e_p;|#p%r(J*T]i
                              g.drawString(sb.toString(), startX, startY, Graphics.TOP|Graphics.LEFT);

         sb = null; sb = new StringBuffer();
2b Ou{l$f5?5@3                        }else{
n__*?dhN3                            sb.append(chars[i]);3G视线t3|||Sb
                            startX += fontWidth;
z9Y$mXA)]C`)f3                        }

3G视线$j{UNV,T qI;_
  }

           //这段代码有很大的性能问题啊,一个一个字的描绘出来是很消耗时间跟内存的
Q4x Jf5G%~g2x%R3                //  for(int i=0; i<chars.length; i++){ 3G视线+E5\)j1t/X*D$c
//   g.drawChar(chars[i], startX, startY, Graphics.TOP|Graphics.LEFT);
c#b.Dc7w3//   int fontWidth = font.charWidth(chars[i]);3G视线BF,[@Fu]$zl
//   width += font.charWidth(chars[i]);3G视线/x XC+wh }.gv
//   if(width >= Platform.WIDTH -  font.charWidth(chars[i]) - 4){ 3G视线4PI\8ut Qz E
//    width = 0;3G视线*S?0A-Hk@r[n s+?
//    startX = 0;3G视线l}y*W,B {4WD
//    startY += this.font.getHeight() + Part.SPACE;3G视线k^W"Ii0S
//   }else
&q(b#azR3F3//    startX += fontWidth ;
&z ex]!vm4d [~3//
X'fm Fi2`3//  }


'EF(f1~#BQ#s6B9f3这两段代码,,屏蔽的一段代码执行时间是400毫秒,上面的一段是170毫秒,而且是字符串不长的情况,如果是很长,那就太慢了。