2008年9月2日星期二

编写高效的移动设备应用

目前来说,再快的移动设备(智能手机、手持设备)的性能也比不上主流的PC。而且,你要考虑电池续航等因素,所以,很多在PC应用上无所谓的代码,需要在移动设备应用中加以优化。

基本原则
用户体验依赖与你的应用,要想让移动设备应用不像蜗牛一样地响应用户的请求,就要保证你的应用不进行不必要的运算,不分配不需要的内存——归根结底,不做不必要的事。

有效使用对象
对象都是需要分配内存的,谨慎地创建短命的临时对象。

使用有效的数据结构
多个一维数组的性能要优于一个多维数组,所以int数组性能也要优于Interger数组。

实类比接口的性能要好
比如要创建一个哈希表,那么尽量使用HashMap hashMap = new HashMap(); 而不是使用Map map = new HashMap();

避免使用浮点数
目前的移动设备的硬件基本上都不支持浮点运算,浮点运算是通过软件实现的,性能极差。甚至是整数的除法和取模等运算,也是通过软件支持的,因此,尽量避免使用。

将成员变量缓存到本地
避免使用:
for (int i = 0; i < this.mCount; i++)
{
do(this.mObjects[i]);
}
而是这样:
int count = this.mCount;
Object[] objs= this.mObjects;
for (int i = 0; i < count; i++)
{
do(objs[i]);
}

不需要访问对象成员时使用静态方法
静态方法的调用性能更佳

少用getter和setter
而是直接访问成员变量,虚方法调用会带来额外的开销。

避免使用枚举
枚举会使代码可读性增强,特别对于API来说,不过,为性能考虑,尽量避免使用枚举。

没有评论: