1.何为性能问题:
在性能测试中存在两个概念:
(1). 响应时间
指从用户操作开始到系统给用户以正确反馈所耗费的时间。一般包括 系统处理时间 + 网络传输时间 + 展示时间,当然对于非网络应用则不包括网络传输时间。响应时间是用户对性能最直接的感受。
(2). TPS (Transaction per second)
TPS为每秒处理的事务数,是系统吞吐量的指标,在搜索系统中也用QPS(Query per second)来衡量。TPS数值一般与响应时间反相关。
而通常所说的性能问题就是指响应时间过长,系统吞吐量过低。在web性能测试中,也会将高并发下的内存泄露归为性能问题。
在Android应用程序中,由于系统ANR限制,所以对主线程的响应时间提出了更高的要求,因为Android ANR具体要求Activity对事件的响应时间不能超过5秒,BroadcastReceiver中执行的时间不能超过10秒。
2.性能优化方式
明白了何为性能问题后,就能明白性能优化实际上就是优化系统的响应时间,提高TPS。优化响应时间,提高TPS主要包括以下几个方面:
(1). 降低执行时间
这部分可以通过:
a. 缓存机制(包括对象缓存(view等),IO缓存(stream等),网络缓存(Lrucache,Diskcache等));
b. 数据存储类型优化(比如数据结构的选用:如不存在线程安全问题时,选用hashmap,Arraylist,而不是线程安全的vector,hashtable等);
c. 算法优化;
d. JNI(使用C++混编,处理计算量较大的事务);
e. 逻辑优化;
f. 需求优化(减少不必要的功能);
(2). 同步改为异步
利用多线程来提高TPS;
(3). 提前或者延迟操作:
错开时间段来提高TPS(比如优化ListView的滑动效率,可以在滑动时暂停网络线程,当暂停滑动时启动网络线程等)。
接下来会从数据库优化,布局优化,java代码优化等方面讲述。