Android开发代码的效率问题

实际上,不仅仅是android手机开发,所有的软件开发都要注意代码效率的问题!一般来说,实现相同的功能尽量较少地使用内存,最少的指令是一个优秀开发者需要时刻注意的!这里从两点来讨论这个问题:

(一)数据类型选择

首先来讨论基本数据类型的选择。对于一个32位的ARM,我们来看看两个16位的数相加的汇编代码:

000016d0 <add_16_16>

16d0: e0810000      add  r0, r1, r0

16d4: e6bf0070        sxth r0,r0

16d8: e12fff1e          bx 1r

可以看出16位的数据相加需要三条指令。下面我们来看看两个double的数据想加的汇编指令:

00001728 <add_double_double>

1728: ec410b16      vmov  d6, r0, r1

172c: ec432b17       vmov d7,r2,r3

1730: ee366b07       faddd   d6, d6,d7

1734: ec510b16      vmov  r0, r1, d6

1738: e12fff1e          bx 1r

可以得出结论,实际上,不同数据类型的使用其效率时完全不一样!

实际上,贸然说使用较小的数据类型效率高是不准确的!对于32的处理器,其32数据类型的效率时最高的!不过总的来说,在数据类型选择上遵循两个原则:

(1)尽量选择数据类型小的

(2)尽量选择相同类型的数据类型来操作:算数/比较等。也就是尽量防止不必要的强制转换。

一般来说,16位的数据排序的效率要远远快于32位64位。

(二)   缓存

然后我们要说一下缓存。客观的来讲:指令越多,操作的数据量越大其效率就越低!为此,处理器有自己的办法,那就是合理的使用缓存!现在处理器缓存技术已经很普遍,通常也有多级缓存!缓存的特点:效率高!成本高!所以一般情况下缓存不可能无限制的使用!缓存的目的就是保证处理器的效率,把常用的数据/指令或者他认为将要用到的数据和指令保存下来以此来满足处理器用的时候能改快速找到!

所以,为保证效率,我们需要最大限度的让处理器能在缓存中找到他需要的数据和指令。一般情况下,那些常常被使用到的就容易在缓存中存在,或者相邻的相同的数据类型,必然数组等,都有可能被提前读到缓存中以便处理器能改快速找到!所以,一般情况下顺序访问数组中的数据比随机访问数据效率高!

Android开发代码的效率问题

时间: 2024-08-18 20:56:45

Android开发代码的效率问题的相关文章

Android开发代码规范(转)

Android开发代码规范 1.命名基本原则    在面向对象编程中,对于类,对象,方法,变量等方面的命名是非常有技巧的.比如,大小写的区分,使用不同字母开头等等.但究其本,追其源,在为一个资源其名称的时候,应该本着描述性以及唯一性这两大特征来命名,才能保证资源之间不冲突,并且每一个都便于记忆. 对于理解应用程序的逻辑流,命名方案是最有影响力的一种帮助.名称应该说明“什么”而不是“如何”.命名原则是:使名称足够长以便有一定的意义,并且足够短以避免冗长.唯一名称在编程上仅用于将各项区分开.以下几点

Android开发代码格式规范

书写规范 1. 编码方式统一用UTF-8. Android Studio默认已是UTF-8,只要不去改动它就可以了. 2. 缩进统一为4个空格,将Tab size设置为4则可以保证tab键按4个空格缩进.另外,不要勾选上Use tab character,可以保证切换到不同tab长度的环境时还能继续保持统一的4个空格的缩进样式. 3. 花括号不要单独一行,和它前面的代码同一行.而且,花括号与前面的代码之间用一个空格隔开. public void method() { // Good } publ

Android开发代码规范

目录 1.命名基本原则  2.命名基本规范 2.1编程基本命名规范 2.2分类命名规范 3.分类命名规范 3.1基本数据类型命名规范 3.2控件命名规范 3.3变量命名规范 3.4整个项目的目录规范化 3.4 res资源文件命名规范 4.代码书写规范  5.注释 6.提高代码质量 7.设计模式(Design Patterns) 1.命名基本原则    在面向对象编程中,对于类,对象,方法,变量等方面的命名是非常有技巧的.比如,大小写的区分,使用不同字母开头等等.但究其本,追其源,在为一个资源其名

Android开发代码混淆经验(Eclipse)

为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译,下面来总结以下混淆代码的步骤: 2.编辑项目下的proguard-project.txt,添加不需要混淆的规则(model.泛型.反射.第三方jar包),proguard-project.txt文件内容如下: # To enable ProGuard in your project, edit project.properties # to define the proguard.config property as describe

Android开发规范(编码+性能+UI)

现在为你带来Android开发规范,包括Android编码规范,Android性能优化以及Android UI优化. 一.Android编码规范 1.java代码中不出现中文,最多注释中可以出现中文 2.局部变量命名.静态成员变量命名 只能包含字母,单词首字母出第一个外,都为大写,其他字母都为小写 3.常量命名 只能包含字母和_,字母全部大写,单词之间用_隔开 4.layout中的id命名 命名模式为:view缩写_模块名称_view的逻辑名称 view的缩写详情如下 LayoutView:lv

android开发——Eclipse环境下代码编辑最常用快捷键集锦(来了就不能空手而归)

Ctrl+D:删除光标所在行 Ctrl+/ :注释选中行 :Ctrl+\:注销选中行 Ctrl+Shift+/:注释选中的java或xml代码块: Ctrl+Shift+\:注销选中的Java或xml代码块.(形式:/*      */ 或 <!--      -->) shift + alt + j或/**+Enter(回车键):添加javadoc头注释,形如/** * * * * * */(个人更习惯用/**+Enter(回车键)) Ctrl+K:向前查找与当前选定内容相同的代码(如查找与

Android开发效率—Eclipse快捷键

很多过去使用Visual Studio开发软件的网友可能不熟悉Java开发环境,今天Android开发网告诉大家一些提高Android开发效率的Eclipse快捷键,可以有效率的帮助我们管理代码和减少键盘输入.Eclipse相对于Visual Studio而言使用Java开发,响应速度和稳定性上有很大的欠缺,这些我们目前只能容忍下. 比较常用的Android123整理如下: 自动补充import Package Ctrl+Shift+O,这里O代表Organize Import的意思. 格式化代

Android 开发—— 小工具,大效率

欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 作者:姚志锋 一.Hugo插件 -- 打印方法运行时间 首先申明下,此Hugo非 彼Hugo(Hugo是由Go语言实现的静态网站生成器). Hugo插件作用 : 能够计算并打印一个方法的输入参数和函数的运行时间 Hugo插件应用场景: 处理Android 应用卡顿问题 (1)先看实例 1)在对应方法处标注@DebugLog SearchResultPanel::dispatchResult处标记@Debug

解析Android开发优化之:从代码角度进行优化的技巧

下面我们就从几个方面来了解Android开发过程中的代码优化,需要的朋友参考下 通常我们写程序,都是在项目计划的压力下完成的,此时完成的代码可以完成具体业务逻辑,但是性能不一定是最优化的.一般来说,优秀的程序员在写完代 码之后都会不断的对代码进行重构.重构的好处有很多,其中一点,就是对代码进行优化,提高软件的性能.下面我们就从几个方面来了解Android开发过程 中的代码优化. 1)静态变量引起内存泄露 在代码优化的过程中,我们需要对代码中的静态变量特别留意.静态变量是类相关的变量,它的生命周期