基于移动平台的应用软件性能优化技术研究.docVIP

基于移动平台的应用软件性能优化技术研究.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于移动平台的应用软件性能优化技术研究.doc

基于移动平台的应用软件性能优化技术研究   摘 要:面对日益复杂的智能移动应用,多核处理器已成为高性能移动计算的一个有效解决方案。对于多核系统中的应用软件性能优化也是其中的研究重点。本文研究了并行程序设计算法和并行程序性能优化技术。通过对程序进行优化,可以使它充分的发挥多核的计算能力,其方法包括增加任务数量改善负载均衡,选择最优的线程与处理核之间关联策略,从而能够大幅提高系统的整体性能。   关键词:移动智能多核系统;多线程;并行计算;分治法;GPA   中图分类号:TP311.52   由于移动智能系统是一个资源受限的系统,它对程序的运行空间和时间要求比桌面系统更为苛刻,因此,应用软件的优化对移动智能系统来说尤显必要和紧迫[1]。   本文主要研究的性能优化是主要指运行速度的优化。应用软件对其运行速度进行优化是指在充分掌握软、硬件特征的基础上,通过应用程序结构调整等手段来缩短完成指定任务所需的运行时间,主要应用在对实时性要求比较高的场合。   目前,移动智能系统的处理器在物理上也支持多线程的并发执行,采用适当数量的并发线程可以获得比单一线程高的运行速度[2]。对于多核系统中的应用软件性能优化,本文研究了基于Android系统的并行程序设计算法和并行程序性能优化技术。   1 我们通过一个实际应用来分析、研究基于移动平台的应用软件优化的技术   包括并行处理技术、多线程优化技术以及利用GPA(Graphics Performance Analyzers)工具辅助分析技术。   本例是一个求圆周率π的应用。有如下数学公式:   将积分公式表示为极限:   实际上Δx不可能做到无穷小,只能让Δx尽可能小,这样求出的结果越接近π。我们用step表示一个Δx,则num_step=1/step尽量地大。考虑到f(x)=1/(x2+1)是一个凸函数,这里取一个中值来求和,即使用f[(i+0.5)/(num_steps)]来代替f[i/(num_steps)]求和,这样求出的和不会总是比实际值偏小。最后可以得出编写程序依据的公式为:   根据上面公式我们编写出相应的计算程序。   2 原始应用(未经优化)研究与分析   我们首先根据上述公式直接推导出应用的计算代码,此代码是没有经过优化的,我们称其为“原始应用”,将其命名为SerialPi。   该应用设计思路是:让计算π的任务放在辅助线程(这里称为任务线程)中运行,主活动上设置按钮来控制线程的运行,并用一个TextView来显示任务线程的结果。应用运行的界面如图1所示。   应用启动后的界面如图1(a)所示。当我们点击“开始计算”按钮后,界面所有的按钮都变成灰色,直到计算π的线程运算完成。这时,界面显示π的计算结果以及线程运行的总时间,如图1(b)所示。   从上述运行界面可知,此应用计算π的时间大约为22秒多。多次运行此应用,其显示的计算时间也大约为此时长。   图1 SerialPi应用运行的界面   2.1 在原始应用 中 新 建 线 程 类MyTaskThread,让其计算π的值。编辑源文件   MyTaskThread.java,主要代码如下:   1 package com.example.serialpi;   2 public class MyTaskThread extends Thread {   3 private Handler mainHandler;   4 public static final int MSG_FINISHED = 1; //定义表示计算结束的消息类型   5 private static final long num_steps = 200000000;//公式中的 num_steps 变量,总步数   6 private static final double step = 1.0 / num_steps;//公式中的step变量,步长   7 public static double pi = 0.0; //π的计算结果   ……   20 public void r u n ()   21 {   22 double x ,sum=0.0;   23 long i;   24 for ( i=0; i num_steps; i++){   25 x = ( i+ 0. 5) * s t e p ;   26 sum=sum+ 4. 0 /(1.0 + x*x );   27 }   28 pI=step*sum;   29 Messagemsg=new Message();   30 msg.what=MSG _FINISHED;//定义消息类型

您可能关注的文档

文档评论(0)

yingzhiguo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档