欢迎来到天天文库
浏览记录
ID:22102006
大小:78.57 KB
页数:13页
时间:2018-10-27
《基于移动平台的应用软件性能优化技术研究.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于移动平台的应用软件性能优化技术研宄由于移动智能系统是一个资源受限的系统,它对程序的运行空间和时间要求比桌面系统更为苛刻,因此,应用软件的优化对移动智能系统来说尤显必要和紧迫[1]。本文主要研究的性能优化是主要指运行速度的优化。应用软件对其运行速度进行优化是指在充分掌握软、硬件特征的基础上,通过应用程序结构调整等手段来缩短完成指定任务所需的运行时间,主要应用在对实时性要求比较高的场合。目前,移动智能系统的处理器在物理上也支持多线程的并发执行,采用适当数量的并发线程可以获得比单一线程高的运行速度[2]。对于多核系统中的应用软件性能优化,本文研究了基于Andro
2、id系统的并行程序设计算法和并行程序性能优化技术。1我们通过一个实际应用来分析、研究基于移动平台的应用软件优化的技术包括并行处理技术、多线程优化技术以及利用GPA工具辅助分析技术。本例是一个求圆周率3T的应用。有如下数学公式:将积分公式表示为极限:实际上Ax不可能做到无穷小,本只能让AX尽可能小,这样求出的结果越接近Jr。我们用step表示一个Ax,则num_step=l/step尽量地大。考虑到f=l/是一个凸函数,这里取一个中值来求和,即使用f[/]来代替f[i/]求和,这样求出的和不会总是比实际值偏小。最后可以得出编写程序依据的公式为:根据上面公式我们编
3、写出相应的计算程序。2原始应用研究与分析我们首先根据上述公式直接推导出应用的计算代码,此代码是没有经过优化的,我们称其为“原始应用”,将其命名为SerialPio该应用设计思路是:让计算it的任务放在辅助线程中运行,主活动上设置按钮来控制线程的运行,并用一个TextView来显示任务线程的结果。应用运行的界面如图1所示。应用启动后的界面如图1所示。当我们点击“开始计算”按钮后,界面所有的按钮都变成灰色,直到计算31的线程运算完成。这时,界面显示nr的计算结果以及线程运行的总时间,如图1所示。从上述运行界面可知,此应用计算it的时间大约为22秒多。多次运行此应用
4、,其显示的计算时间也大约为此时长。ISerialPi应用运行的界面在原始应用中新建线程类MyTaskThread,让其计算nr的值。编辑源文件,主要代码如下:lpackage;2publicclassMyTaskThreadextendsThread{3privateHandlermainHandler;4publicstaticfinalintMSG_FINISHED-l;//定义表示计算结束"的消息类型5privatestaticfinallongnum_steps=200000000;//公式中的num_steps变量,总步数6privatestatic
5、finaldoublestep=/num_steps;//公//ii的计算结果式中的step变量,步长7publiestaticdoublepi=;20publievoidrun21{22doublex,sum=;231ongi;24for{25x=*step;26sum=sum+4.0/;27}28pl=step氺sum;29Messagemsg=newMessage;30二MSG_FINISHED;//定义消息类型31mainHandMessage;//发送消息}第22行至第28行是根据计算公式书写的计算n的代码。这里x变量是函数f=l/的自变量X,sum
6、是5:的累积变量。累积充E后,最后在第28行,让:n:=stepX12算出最后结果。【在线程的rim函数中,一旦计算完成,在第29行开始,就向主线程发送计算完成的消息】编辑主程序的源代码文件,让其控制线程的运行,并显示计算结果,其主要代码如下:lpackage;2publicclassMainActivityextendsActivity{13privateMyTaskThreadmyThread=null;14privateTextViewtv_TaskOutputlnfo;//显示任务线程输出15privateHandlermHandler;;16priv
7、atelongend_time;17privatelongtime;18privatelongstart_time;38mHandler=newHandler{39pub1icvoidhand1eMessage{40switch42caseFINISHED:43end_time=;44time=endtime-starttime;45Strings="运行结束,Pi="++"耗时:46+;47tv_;48btn_;49break;50default:break;}}};61privatevoidstartTask{62myThread=newMyTaskThr
8、ead;//创建一个线程63if)64
此文档下载收益归作者所有