Android开发中如何编写高效代码及性能微优化

在Android开发中,性能优化至关重要。文章强调了选择正确算法和数据结构的重要性,提出始终衡量性能、避免不必要的对象创建、使用静态方法和final常量等优化技巧。通过实例解释了如何减少对象创建、优化循环和避免浮点数使用,提醒开发者谨慎使用原生方法,并注意性能误区,如过度关注接口调用和字段访问的微小差异。
摘要由CSDN通过智能技术生成

在性能优化工作中,选择正确的算法和数据结构应始终是您的首要任务。

编写高效代码有两个基本规则:

  • 不需要做的工作就不要做
  • 如果可以避免,就不要分配内存

在微优化 Android 应用时,您会遇到的最棘手的问题之一是应用肯定会在多种类型的硬件上运行。不同版本的虚拟机会在不同的处理器上以不同的速度运行。通常并不能简单地用一句话“设备 X 比设备 Y 快/慢 F 倍”概括,也不能把由一台设备产生的结果扩展到其他设备上。特别是,在模拟器上得出的测量结果很难说明在任何设备上的性能。有 JIT 的设备和没有 JIT 的设备之间也存在巨大差异:最适合有 JIT 的设备的代码并不一定最适合没有 JIT 的设备。为了确保应用在各种设备上都能达到很好的性能,请确保代码在所有级别都很高效,并积极优化应用性能。

始终衡量性能

在开始优化之前,请先找到需要解决的问题。请确保您可以准确衡量现有性能,否则便无法衡量所尝试的替代方案带来的优势。

您还可以使用 Traceview 分析性能,但务必注意,Traceview 目前会停用 JIT,这可能会导致其将时间成本错误地归因于启用 JIT 后也许能够消除的代码。在实施 Traceview 数据所建议的更改后,请确保所产生的代码在没有 Traceview 的情况下运行时速度确实更快了。

避免创建不必要的对象

创建对象绝不是没有成本的。带有针对临时对象的线程级分配池的分代垃圾回收器可以降低分配成本,但分配内存的成本总是要高于不分配内存。随着您在应用中分配越来越多的对象,您会强制进行定期垃圾回收,导致用户体验出现小“问题”。

以下是对您有所帮助的一些措施的示例:

  • 如果您有一个返回字符串的方法,并且您知道其结果无论如何都会附加到某个 StringBuffer,则更改签名和实现,以便函数直接进行附加,而非创建短期的临时对象。
  • 从一组输入数据中提取字符串时,请尝试返回原始数据的子字符串,而非创建副本。您会创建一个新的 String 对象,但它会与这些数据共享 char[]。࿰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值