站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2ME 专题如何使midlet提速?(征文)

如何使midlet提速?(征文)

摘要: 如何使midlet提速?(征文)
<tr><td>

[本文章最后由 rocks 在2006-02-28 10:15:38编辑过]

http:///tech/article782.html
asmair

[] 各位高人请写些原创文章吧,手机的执行速度有限,如何在这有限的范围内更大限度地使程序提速,就成了大问题,非常想知道关于时间复杂度的编程经验,让大家共同提高代码质量.

rocks

好建议:)
我先提几条,大家补充,以后可以汇总起来。
1 非常general的,适用于所有java程序:少用字符串连接,多用StringBuffer
2 尽量用固定大小的数组代替使用Vector
[]3 如果可以不使用新class就能实现功能,就不要增加新的class,因为每个class都有一定的内存开销
[]4 使用有限的面向对象,因为纯粹的OO往往意味着更多的虚方法,更多的层次关系,更多的class
5 考虑使用public域(即数据成员)代替getter和setter
[]6 对确定不必被继承的方法使用final修饰符
7 使用BufferedInputStream或BufferedReader来包裹输入流
8 发行之前使用混淆器处理你的classes,除了能防止别人任意反编译偷窥你的程序,也能减小class文件的尺寸,因为混淆器往往用较短的字符串代替原来的变量或方法名。

sdujerome

以上的建议都挺好的,我再加一条:
是不是可以在适当的时候显式的调用gc

asmair

如果有可能的话,考虑用西门子提供的一些库,如GAME、MMC等,能显著提高速度,但代价是兼容性不好。

blueshark

[] http://wireless.java.sun.com/midp/ttips/appsize/

jhere

提个问题:应该是程序设计完成之后考虑优化还是在编码设计的时候就考虑呢?

faun

你在整体设计的时候就应该考虑这些问题,在程序设计时也应该注意到这些问题,当然最后优化还是应该在程序设计完成之后再做!
[]
leelong

我的原则是有这么其中两个:
1。对于哪些需要动态的复杂算法才能达成的目标,能否在pc机器上就预先处理一下,而形成静态的数据结构,然后再用简单算法来使用。
2。要重视的是:反复频繁的操作是性能的一个瓶颈。在这上面下功夫非常值得。比如:
某个循环一次操作只需耗费 10ms, 如果你一个不注意,让它耗费了 20ms (这时你可能不觉得有问题,才多了小小的 10ms嘛)。再假设这个循环很频繁,占软件运行总时间的 30%,那么,这样就会在不经意间严重降低了总体速度。
[]所以解决方案首先就是去查软件的性能瓶颈,再对症下药。

rocks

[] 非常同意leelong的看法,您的“大眼睛”应该就是程序优化方面的典范之作了!
编程序和很多事物一样,有一个“20-80”的因素在里面,运行时往往是80%的时间在运行20%的代码,所以尽量的优化这20%的代码就显得异常重要。

Fuchs

我也有两个问题:
[]1、用对象来封装数据会不会明显地影响速度,比如说在输入输出的时候使用包含多种不同类型属性的对象,而不是原始的整数等。
2、显示调用System.gc()是不是可以明显加快程序运行速度。

rocks
[]
1.不是很明显的吧,但肯定是有影响,要分情况处理,主要解决显著影响性能的地方,细节上的优化应该是最后做的事情
2.应该是会降低运行速度,不过可以优化内存使用情况

anonimousboy
[]
to rocks:
1.对于你的第三条:用inner class实现的话会增加内存开销吗?
2.对于你的第五条:因为我们做的是手机的程序,安全是第一的,所以我建议你把第五条去掉!
[]
rocks

to anonimousboy:
1 inner class编译后就会生成一个单独的class文件,形如MyHostClass$MyInnerClass.class这样的,即使是匿名内嵌类也一样。
2 想象不出来public field会对安全性有何影响,呵呵,getter和setter的首要目的是增强对象的封装性,而并非考虑安全性。
3 如果真的安全性和性能发生抵触,那么就要根据具体问题来具体分析了,如果做的是证券软件,毫无疑问安全性是最重要的,如果是个即时的动作游戏的话,那性能应该是首要考虑的问题。
Just For Your Infomation
[]:)
http:///tech/article782.html
</td></tr></table></td> </tr> <tr> <td background="/pic/split.gif" height=1></td> </tr> <tr> <td class="tdMargin1">
↑返回目录
前一篇: 对BigEye秀图器 .bin格式的简单分析
后一篇: 企业管理软件在J2ME无线平台中的应用