iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android应用程序运行的性能设计
  • 117
分享到

Android应用程序运行的性能设计

性能运行程序Android 2022-06-06 12:06:30 117人浏览 八月长安
摘要

  Android应用程序运行的移动设备受限于其运算能力,存储空间,及电池续航。由此,它必须是高效的。电池续航可能是一个促使你优化程序的原因,即使他看起来已经运行的足够快了

  Android应用程序运行的移动设备受限于其运算能力,存储空间,及电池续航。由此,它必须是高效的。电池续航可能是一个促使你优化程序的原因,即使他看起来已经运行的足够快了。由于续航对用户的重要性,当电量耗损陡增时,意味这用户迟早会发现是由于你的程序。

  虽然这份文档主要包含着细微的优化,但这些绝不能成为你软件成败的关键。选择合适的算法数据结构永远是你先应该考虑的事情,但这超出这份文档之外。

  1.介绍

  写出高效的代码有两条基本的原则:

  ◆不作没有必要的工作

  ◆尽量避免内存分配。

  2.明智的优化

  这份文档是关于Android规范的细微优化,所以先确保你已经了解哪些代码需要优化,并且知道如何去衡量你所做修改所带来的效果(好或坏)。用开投资开发的时间是有限的,所以明智的时间规划很重要。

  这份文档同时确保你在算法和数据结构上作出佳选择,同时考虑了api选择所带来的潜在影响。使用恰当的数据结构和算法比这里的任何建议都有价值,考虑API版本带来的影响会如实你选择更好的实现。

  当你优化Android程序时会遇到的一个棘手问题是确保你的程序能在不同的硬件平台上运行。不同版本的虚拟机在不同处理器上的运行速度各不相同。并且不是简单的设备A比设备B快或者慢,并针对一个设备与其他设备之间做出排列。特别的,模拟器上只能评测小部分可以在设备上体现的东西。有无JIT的设备间也有着巨大差异:对于有JIT设备好的代码有时对无JIT的设备并不是好的。

  如果你想知道程序在设备上的表现,必须在上面进行测试

  3.避免创建不必要的对象

  对象创建永远不会免费的。每个线程的分代GC给临时对象分配一个地址池能降低分配开销,但分配内存往往需要比不分配内存高的代价。

  如果在用户界面周期内分配对象,会强制一个周期性的垃圾回收,给用户体验造成小小的停顿间隙。Gingerbread中介绍的并发回收也许有用,但应该避免不必要的工作。

  因此,避免创建不需要的对象实例。下面是几个例子:

  ◆如果有一个返回String的方法,他的返回值通常附加在一个StringBuffer上,改变声明和实现,这样函数直接在其后面附加,而非创建一个短暂存在的临时变量。

  ◆当从输入的数据集合中读取数据时,考虑返回原始数据的子串,而非新建一个拷贝。这样你会创建一个新的对象,但是他们共享该数据的char数组。换来的是即使你仅仅使用原始输入的一部分,你也需要保证它一直存在于内存中。

  一个更彻底的观点是将多维数组切割成一维数组:

  ◆Int类型的数组比Integer类型的好。推而广之,两个平行的int数组要比一个(int,int)型的对象数组高效。这个定理对于任何基本数据类型的组合都通用。

  ◆如果需要实现存放元组(Foo,Bar)对象的容器,记住两个平行数组Foo[],Bar[]会优于一个(Foo,Bar)对象的数组。(例外情况是:当你设计API给其他代码调用时,好用好的API设计来换取小的速度提升。但在自己的内部代码中,尽量尝试高效的实现。)

  通常来说,尽量避免创建短时临时对象。少的对象创建意味着低频的垃圾回收。这对于用户体验产生直接的影响。

  4.性能之谜

  前一个版本的文档给出了好多误导人的主张,这里做一些澄清:

  ◆在没有JIT的设备上,调用方法所传递的对象采用具体的类型而非接口类型会更有效(比如,传递HashMapmap比传递Mapmap调用一个方法耗费的开销小,尽管两种情况下的map都是HashMap)。但这并不是两倍慢的情形,事实上,只相差6%,而JIT使这两种调用的效率不分伯仲。

  ◆在没有JIT的设备上,访问缓存后的字段比直接访问字段快大概20%。在有JIT的情况下,字段访问和局部访问耗费是一样的。所以这里不值得优化,除非你觉得他会让你的代码更易读(对于final,static,及staticfinal变量同样适用)。


--结束END--

本文标题: Android应用程序运行的性能设计

本文链接: https://www.lsjlt.com/news/28624.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • android只运行一个应用程序怎么设置
    要在Android设备上只运行一个应用程序,可以按照以下步骤进行设置:1. 在设备上打开“设置”应用程序。2. 在设置菜单中找到“应...
    99+
    2023-09-22
    android
  • 如何在Android设备上运行Python程序
    如何在Android设备上运行Python程序 在Android设备上运行Python程序可以为用户提供更广泛的开发和使用选择。本文将介绍几种在Android上运行Python的方法,并附上相应的源代...
    99+
    2023-10-23
    android python 开发语言 Android
  • 怎么设置不运行指定的Windows应用程序
    这篇文章主要介绍“怎么设置不运行指定的Windows应用程序”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么设置不运行指定的Windows应用程序”文章能帮助大家解决问题。按【Windows+R】...
    99+
    2023-07-01
  • win10如何设置不运行指定的应用程序
    今天小编给大家分享一下win10如何设置不运行指定的应用程序的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。按“Windows...
    99+
    2023-07-01
  • win10怎么设置不运行指定的Windows应用程序
    这篇文章主要介绍“win10怎么设置不运行指定的Windows应用程序”,在日常操作中,相信很多人在win10怎么设置不运行指定的Windows应用程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win10...
    99+
    2023-06-27
  • 如何使用Memcache提升PHP应用程序的计算性能?
    如何使用Memcache提升PHP应用程序的计算性能?随着Web应用程序的复杂性不断增加,优化应用程序的性能成为开发者的首要任务之一。在PHP应用程序中,我们可以使用Memcache来提升计算性能,以减少数据库查询,增加数据的缓存并减少计算...
    99+
    2023-11-07
    Memcache(存储) 提升(性能) PHP(应用程序)
  • 计算机能直接执行的程序是用什么程序设计语言编写的
    这篇文章主要介绍了计算机能直接执行的程序是用什么程序设计语言编写的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。计算机能直接执行的程序是用“机器语言”编写的。机器语言是机器能...
    99+
    2023-06-14
  • Android应用中是怎么判断程序是在前台运行还是在后台运行的
    本篇文章为大家展示了Android应用中是怎么判断程序是在前台运行还是在后台运行的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。具体方法如下:public static boolean Frontd...
    99+
    2023-05-31
    android roi
  • 重要性及应用领域:C语言程序设计
    C语言是一种高级编程语言,广泛应用于计算机科学与技术领域。它以其高效、灵活、可移植等特点,成为程序设计的重要工具。本文将介绍C语言程序设计的重要性和应用领域。 首先,C语言的重要性体现...
    99+
    2024-02-23
    应用 c语言 程序设计 c语言编程
  • 应用OSCache提升J2EE系统运行性能
    文章摘要Cache是一种用于提高系统响应速度、改善系统运行性能的技术。尤其是在Web应用中,通过缓存页面的输出结果,可以很显著的改善系统运行性能。本文中作者给大家介绍一个实现J2EE框架中Web应用层缓存功能的开放源代码项目----OSCa...
    99+
    2023-06-03
  • 怎么在Android应用中利用WakeLock保持程序在后台运行
    怎么在Android应用中利用WakeLock保持程序在后台运行?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。官方的解释:PowerManager负责对Android设备电源相...
    99+
    2023-05-31
    android wakelock roi
  • 使用pycharm运行flask应用程序的详细教程
    在flask更新到1.0之后的版本,官方推荐使用flask run的方式运行程序,可是作为开发,如果没有了pycharm的断点调试,这可太难受了。 所以,本篇博客主要讲述如何在pyc...
    99+
    2024-04-02
  • 运用ASP Windows事件日志,成为应用程序性能的侦探
    ASP Windows事件日志是一个功能强大的工具,可以帮助开发人员和系统管理员诊断和解决应用程序性能问题。通过记录应用程序的事件,ASP Windows事件日志可以帮助开发人员和系统管理员了解应用程序的运行状况,并快速找到应用程序性能...
    99+
    2024-02-10
    ASP Windows事件日志 应用程序性能 诊断 解决 示例
  • 无法从 Go 应用程序运行“op”
    php小编鱼仔在使用Go语言开发应用程序时,可能会遇到一个常见的问题,即无法从Go应用程序运行"op"。这个问题可能会导致应用程序无法正常运行或出现错误信息。解决这个问题的方法有很多种...
    99+
    2024-02-10
    go语言
  • 如何用ThinkPHP缓存设置提升应用程序的性能
    这篇文章主要介绍“如何用ThinkPHP缓存设置提升应用程序的性能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何用ThinkPHP缓存设置提升应用程序的性能”文章能帮助大家解决问题。一、缓存的优...
    99+
    2023-07-06
  • Apache能否提高PHP应用程序的性能?
    Apache是一款广泛使用的Web服务器软件,而PHP是一种流行的服务器端脚本语言。许多Web开发人员使用Apache和PHP来开发Web应用程序。但是,Apache能否提高PHP应用程序的性能呢?这是一个值得探讨的问题。 Apache和...
    99+
    2023-10-11
    apache spring git
  • 【性能优化】VUE 计算属性高效运行的秘诀
    1. 缓存计算结果 缓存计算结果是提高计算属性性能的最有效方法之一。使用 cache 修饰符可以在计算属性首次计算后缓存结果,避免在后续访问中重新计算。 computed: { computedName: { cache: ...
    99+
    2024-02-20
    Vue 计算属性 性能优化 高效运行
  • 如何运行J2EE应用程序客户端
    这篇文章主要介绍“如何运行J2EE应用程序客户端”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何运行J2EE应用程序客户端”文章能帮助大家解决问题。在终端窗口中,进入到examples/src/E...
    99+
    2023-06-03
  • 如何在pycharm中运行flask应用程序
    这篇文章给大家介绍如何在pycharm中运行flask应用程序,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。首先你的使用pycharm创建你的第一个app。然后,你会有一个基本的应用程序了。没错就是那个hello wo...
    99+
    2023-06-15
  • 高性能 C++ 代码中的设计模式应用
    在高性能 c++++ 代码中应用设计模式,特别是策略模式和责任链模式,可以显著提升性能。策略模式将算法分离为独立对象,允许在运行时轻松切换它们。责任链模式将对象链接成一个链,按顺序处理请...
    99+
    2024-05-13
    c++ 设计模式 冒泡排序
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作