代码优化学习笔记
来源:互联网 发布:汉王扫描软件下载 编辑:程序博客网 时间:2024/05/01 21:31
1.每当需要选择一个数据结构来解决问题时,最好将选择范围缩小到只有几个类,因为通常每个类为特定目的或为提供特定的服务而优化。例如,Vector内部有锁影响性能,如不需要在数据结构内部处理同步,应该选择ArrayList而不是Vector。
2.内存分配是优化的一部分,可以提供一个备用机制,然后捕获outOfMemoryError异常,这样可以让程序跑在更多的设备上。虽然这种可选的优化让代码难以维护,但提供了发挥空间。
3.Android展开资源(setContentView)是一个开销相对比较大的操作,可以通过降低布局(Layout,XML文件定义应用的外观)复杂性来使得资源展开加快。几个降低布局复杂性的步骤如下:
(1)使用RelativeLayout代替嵌套LinearLayout,尽可能保持“扁平化”的布局。此外,减少创建的对象数量,也会让事件的处理速度加快。
(2)使用ViewStub推迟对象创建。(ViewStub在运行时展开资源,当View-Stub需要展现时,它被相应的资源展开替换,自己成为等待垃圾回收的对象)。
4.StrictMode用来检测系统运行或访问网络等操作缓慢等不良问题的工具。通常情况下,在应用启动时,即当OnCreate()被调用时,启用StrictMode。只在开发阶段启用StrictMode,发布应用时,记得要禁用它。
5.加快要执行的SQL语句字符串的创建速度,使用+运算符来连接字符串不是最有效的方法,而使用StringBuilder对象,或调用String.format可以提高性能。
(1)String sql = "INSERT INTO cheese VALUES(\"" + name + "\",\"" + origin + "\")";393ms
(2)String sql = String.format("INSERT INTO cheese VALUES(\"%s\" ,(\"%s\")",name,origin);436ms
(3)StringBuilder sql = new StringBuilder();sql.append("INSERT INTO cheese VALUES(\""); sql.append(name).append("\",\"").append(origin).append("\")");371ms
(4)使用SQLiteStatement只进行一次编译速度快很多268ms
(5)使用ContentValues对象把值插入到数据库中352ms
(6)使用事务166ms
Android定义了一些可以提高性能的类,如可以使用DatabaseUtil.InsertHelper在数据库中插入多行,也只需编译一次INSERT语句。
6.高效实用内存之使用数据类型:
(1)处理大量数据时,使用可以满足要求的最小数据类型。例如,基于性能和空间的考量,选择short型数组而不是int数组。如果对精度要求不高(如果需要,使用FloatMath类),使用float而不是double。
(2)避免类型转换。尽量保持类型一致,尽可能在计算中使用单一类型。
(3)如果有必要取得更好的性能,推倒重来,但要认真处理。
7.Linux的优先级是从-20(最高)到19(最低),而线程的优先级是从1(最低)到10(最高)。
8.使用Message.obtain()或Handler.obtainMessage() API来获得Message对象,因为它们从全局的消息池中取出Message对象,这比每次单独创建新实例获取Message效率更高。利用这些API设置消息中携带的各种字段也比较容易。
- 代码优化学习笔记
- [zt]代码优化学习笔记
- 优化代码原则--学习笔记
- AndroidTrainingCHS学习笔记 -- 代码性能优化建议
- Unity3D学习笔记:代码及效率优化
- SEO代码优化的学习笔记
- 代码质量及其优化(学习笔记)
- 学习笔记01--在MR中优化用户的代码
- ios学习笔记之九--图片移动代码的优化
- Java 单例设计模式 与 代码优化 学习笔记
- jquery代码优化笔记
- javascript代码优化笔记
- 优化代码结构笔记
- oracle优化学习笔记
- 斜率优化 [学习笔记]
- MYSql 学习优化笔记
- MySQL优化学习笔记
- Android优化学习笔记
- 【live555】著名的基类们和他们在库中的作用
- 深入理解__proto__ 、constructor和prototype的关系
- 做了个小论坛xiamenbbs.cn,欢迎大家捧场
- gridview 编辑,删除,更新的用法
- VS远程调试方法
- 代码优化学习笔记
- 配置本地环境之phpmyadmin安装
- XML Schema和XML DTD
- Spring 的“零配置”支持“ 的学习
- [Qt教程] 第43篇 进阶(三)对象树与拥有权
- 二次排序原理
- java如何使Double类型保留两位小数
- Recall Sent Message in Outlook2010
- Android使用Application总结