龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

两种J2ME代码优化解决方案(1)(2)

时间:2013-03-06 14:58来源:未知 作者:admin 点击:
分享到:
二、低级J2ME代码优化 1,提前绘制复杂图像 我们已经知道,使用LCDUI绘制图像是很慢的,因此最好是能够避免这种绘制。其中的一个方法就是用一个预生成

二、低级J2ME代码优化

1,提前绘制复杂图像

我们已经知道,使用LCDUI绘制图像是很慢的,因此最好是能够避免这种绘制。其中的一个方法就是用一个预生成图像来减少复杂图像的绘制。进一步来讲,举例:将所有的游戏状态信息整合到一个面板中(得分,生命数,能量值等),然后对这些信息进行一次性同时更新。

2,保持类和内存之间的平衡

产生新的类会增加JAR包文件的大小,因此应该尽量避免。有的时候增加了额外类的开销可能节省了额外的内存开销,这也是值得的。

3,复杂值的预计算

节省运算的一个好方法就是对数值进行预运算,从而无需再调用大开销的计算方法。一个很好的例子就是:主窗口画布的高度和宽度就是很好的缓存对象。例如:可以调用getHeight方法和getWidth方法一次,然后将它们的结果缓存起来,而不是在每一次绘图中都调用这两种方法。

4,使用数组

在任何时候,只要可能,都应该使用数组而不是Vector,因为数组的运行速度更快。通常面临的唯一问题是,如果最初分配的数组空间不够大,将需要对数组的大小进行扩充。这可以做到,但它需要对整个数组进行重建。例如: 

  1. Publicfinalstaticint[]expandArray(int[]oldArray,intexpandBy)  
  2. {  
  3. int[]newArray=newint[oldArray.length+expandBy];  
  4. System.arraycopy(oldArray,0,newArray,0,oldArray.length);  
  5. ReturnnewArray;  
  6. }  

任何时候,都应该尽量使用一维数组。访问二维数组变量的速度只有访问一维数组变量的一半。当然,仍然可以访问二维数组的对象,只是需要加入一点点计算。例如,与其使用这条语句:
world[y][x]=0;
不如下面这条语句运行的快:
world[y*tilesWide+x]=0;
这条语句通过行列的位置将数值转换成一维值,实现了对数组同一元素的访问。

5,不要使用数组

呵呵,尽管数组的访问比Vector快,但仍然比直接访问变量要慢,因此如果可能就应该删除对数组的访问,或者为一些常用方法中的数组寻求其他能提高性能的办法。

6,使用快速方法

并不是所有Java调用的方法在性能上都是相同的,方法声明方式的不同对性能会会产生很多的影响。可以使用的最快的方法类型是静态方法,因此应该尽可能多地将代码置于静态调用方法中。运行速度仅次于静态方法的是声明为final的方法。运行最慢的两种方法是在接口中定义的方法和用关键字synchronized声明的方法,必须尽可能地避免使用这些类型的方法。

7,其他优化

1)异常处理非常缓慢,不要为一半的游戏逻辑使用异常,只用它们来报告真正的错误状态。
2)使用switch表达式比使用if条件语句块的速度要快。
3)尽可能避免使用String对象进行运算,使用StringBuffer。
4)内嵌类的运行很慢,尽可能避免使用。
5)在完成一个引用的使用后将它设为null。
6)不要浪费时间来将一个对象初始化为null或0,java虚拟机会替我们完成这样的初始化
7)多思考新方法,这会使我们的大脑运转的更快。
8)如果可能,尽量使用static,它们运行都很快。它同时适用于方法和域,这条规则就是,如果它可以是静态的,那么就把它声明为静态的。
9)避免类型转换。

精彩图集

赞助商链接