1 / 12
文档名称:

优就业Android教程-Android应用程序运行的性能设计.doc

格式:doc   大小:123KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

优就业Android教程-Android应用程序运行的性能设计.doc

上传人:tswng35 2019/4/4 文件大小:123 KB

下载得到文件列表

优就业Android教程-Android应用程序运行的性能设计.doc

相关文档

文档介绍

文档介绍:优就业Android教程-Android应用程序运行的性能设计Android应用程序运行的移动设备受限于其运算能力,存储空间,及电池续航。由此,它必须是高效的。电池续航可能是一个促使你优化程序的原因,即使他看起来已经运行的足够快了。由于续航对用户的重要性,当电量耗损陡增时,意味这用户迟早会发现是由于你的程序。虽然这份文档主要包含着细微的优化,但这些绝不能成为你软件成败的关键。选择合适的算法和数据结构永远是你最先应该考虑的事情,但这超出这份文档之外。:◆不作没有必要的工作◆尽量避免内存分配。,所以先确保你已经了解哪些代码需要优化,并且知道如何去衡量你所做修改所带来的效果(好或坏)。用开投资开发的时间是有限的,所以明智的时间规划很重要。这份文档同时确保你在算法和数据结构上作出最佳选择,同时考虑了API选择所带来的潜在影响。使用恰当的数据结构和算法比这里的任何建议都有价值,考虑API版本带来的影响会如实你选择更好的实现。当你优化Android程序时会遇到的一个棘手问题是确保你的程序能在不同的硬件平台上运行。不同版本的虚拟机在不同处理器上的运行速度各不相同。并且不是简单的设备A比设备B快或者慢,并针对一个设备与其他设备之间做出排列。特别的,模拟器上只能评测小部分可以在设备上体现的东西。有无JIT的设备间也有着巨大差异:对于有JIT设备好的代码有时对无JIT的设备并不是最好的。如果你想知道程序在设备上的表现,。每个线程的分代GC给临时对象分配一个地址池能降低分配开销,但分配内存往往需要比不分配内存高的代价。如果在用户界面周期内分配对象,会强制一个周期性的垃圾回收,给用户体验造成小小的停顿间隙。Gingerbread中介绍的并发回收也许有用,但应该避免不必要的工作。因此,避免创建不需要的对象实例。下面是几个例子:◆如果有一个返回String的方法,他的返回值通常附加在一个StringBuffer上,改变声明和实现,这样函数直接在其后面附加,而非创建一个短暂存在的临时变量。◆当从输入的数据集合中读取数据时,考虑返回原始数据的子串,而非新建一个拷贝。这样你会创建一个新的对象,但是他们共享该数据的char数组。换来的是即使你仅仅使用原始输入的一部分,你也需要保证它一直存在于内存中。一个更彻底的观点是将多维数组切割成一维数组:◆Int类型的数组比Integer类型的好。推而广之,两个平行的int数组要比一个(int,int)型的对象数组高效。这个定理对于任何基本数据类型的组合都通用。◆如果需要实现存放元组(Foo,Bar)对象的容器,记住两个平行数组Foo[],Bar[]会优于一个(Foo,Bar)对象的数组。(例外情况是:当你设计API给其他代码调用时,最好用好的API设计来换取小的速度提升。但在自己的内部代码中,尽量尝试高效的实现。)通常来说,尽量避免创建短时临时对象。少的对象创建意味着低频的垃圾回收。这对于用户体验产生直接的影响。,这里做一些澄清:◆在没有JIT的设备上,调用方法所传递的对象采用具体的类型而非接口类型会更有效(比如,传递HashMapmap比传递Mapmap调用一个方法耗费的开销小,尽管两种情况下的map都是HashMap)。但这并不是两倍慢的情形,事实上,只相差6%,而JIT使这两种调用的效率不分伯仲。◆在没有JIT的设备上,访问缓存后的字段比直接访问字段快大概20%。在有JIT的情况下,字段访问和局部访问耗费是一样的。所以这里不值得优化,除非你觉得他会让你的代码更易读(对于final,static,及staticfinal变量同样适用).,将方法设置为静态,调用会加速15%到20%。这也是一种好的做法,因为你可以通过方法声明知晓调用该方法不需要更新此对象的状态。++中,通常做法是用Getters(i=getCount())代替直接访问字段(i=mCount)。这是C++中一个好的****惯,因为编译器会内联这些访问,如果需要约束或者调试这些域的访问,你可以在任何时间添加代码。在Android中,这是个不好的想法。虚方法调用代价比直接存取字段高昂的多。按照通常面向对象语言的做法在公共接口中使用Getters和Setters是有原因的,但应该在一个经常访问其字段的类中采用直接访问。无JIT时,直接字段访问大约比调用无关紧要的getter来访问快3倍。有JIT时(直接访问字段开销和访问局部变量是一样的),要快7倍。在Froyo

最近更新

2024年福建省泉州市行政职业能力测验题库(名.. 148页

2024年肇庆医学高等专科学校单招职业适应性测.. 57页

2024年辽宁机电职业技术学院单招职业适应性测.. 58页

2024年辽宁省朝阳市行政职业能力测验题库(综.. 148页

2024年郑州信息工程职业学院单招职业适应性测.. 58页

2024年青海农牧科技职业学院单招职业适应性测.. 59页

2024年黑龙江省牡丹江市行政职业能力测验题库.. 148页

2024年黑龙江省齐齐哈尔市行政职业能力测验题.. 148页

云南省临沧地区选调生考试(行政职业能力测验.. 147页

婚姻无效可以申请撤销吗 4页

公共基础知识广东省江门市选调生考试(行政职.. 147页

公共基础知识江苏省无锡市选调生考试(行政职.. 149页

公共基础知识浙江省宁波市选调生考试(行政职.. 147页

公共基础知识甘肃省甘南藏族自治州选调生考试.. 149页

公共基础知识贵州省安顺地区选调生考试(行政.. 147页

公共基础知识重庆市内江市选调生考试(行政职.. 148页

公共基础知识陕西省宝鸡市选调生考试(行政职.. 148页

公共基础知识黑龙江省牡丹江市选调生考试(行.. 150页

吉林省松原市事业单位招聘考试(职业能力倾向.. 148页

吉林省长春市事业单位招聘考试(职业能力倾向.. 148页

安徽省2024年大学生村官选聘工作历年高频难、.. 59页

安徽省巢湖市事业单位招聘考试(职业能力倾向.. 148页

安徽省滁州市事业单位招聘考试(职业能力倾向.. 149页

安徽省马鞍山市事业单位招聘考试(职业能力倾.. 148页

山东省威海市事业单位招聘考试(职业能力倾向.. 147页

山东省济宁市事业单位招聘考试(职业能力倾向.. 150页

山东省莱芜市事业单位招聘考试(职业能力倾向.. 147页

广东省选调生考试(行政职业能力测验)综合能.. 147页

广西省玉林市选调生考试(行政职业能力测验).. 146页

2024年世界女排联赛全部决赛赛程表 5页