[发明专利]可迁移函数执行时间的获得方法及系统在审
申请号: | 201210305374.5 | 申请日: | 2012-08-24 |
公开(公告)号: | CN103631573A | 公开(公告)日: | 2014-03-12 |
发明(设计)人: | 邹同亮;刘震;袁小燕;董强;罗曼 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 北京安信方达知识产权代理有限公司 11262 | 代理人: | 李健;龙洪 |
地址: | 518057 广东省深圳市南山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 迁移 函数 执行时间 获得 方法 系统 | ||
技术领域
本发明涉及在计算机技术,尤其涉及一种可迁移函数执行时间的获得方法及系统。
背景技术
相对于其它的移动设备,手机的可携带性和通信性更强,可以提供7×24小时的网络接入。但受制于硬件的限制,手机的计算能力和存储能力都很有限,而云计算却拥有超强的计算能力和存储能力以及诸多的优势,如果将二者结合起来,即分析应用程序的哪些部分在手机上运行比较耗时,将耗时的部分放到云端执行,从而加快应用程序的执行速度,提供更好的用户体验。在当前的手机操作系统中,安卓(Android)是主流手机操作系统,因此我们主要分析Android应用程序的两个关键问题:第一个问题是分析Android应用程序中满足迁移条件的函数,即这些函数没有涉及本地资源,比如用户界面(UI)、硬件资源等;第二个问题是在第一个问题的基础上分析在手机上运行比较耗时的函数。
针对第一个问题:如何分析Android应用程序中哪些函数可以迁移到云端执行?这个问题的解决办法是过滤掉那些涉及本地资源的函数(比如:与UI、硬件、网络相关的函数和本地(NATIVE)函数)以及直接和间接调用这些涉及本地资源的函数,过滤前者的原因是这些函数需要手机端的本地资源,云端无法提供,过滤后者的原因是,C调用B,B调用A(A→B→C),如果A函数涉及本地资源,则B、C函数也涉及本地资源,因此B、C函数也不能迁移到云端执行。综上解决此问题需要分析Android应用程序中函数的调用关系,具体实现方法如下:
方法1、Android提供了一个工具Dmtracedump可以利用跟踪视图(Traceview)分析的结果来分析函数调用关系,但是目前Dmtracedump使用需要有一个面向对象、直译式计算机程序设计语言python脚本支持,而且它包含所有的库函数(因为Traceview分析了所有的库函数),同时,Traceview需要改动应用程序源码才能实现;
TraceView的使用:
修改代码(code),在需要调试的起始和结束位置加入Android API的调试函数(即Debug.startMethodTracing(″calc″),Debug.stopMethodTracing())“calc”获得调试信息的文本文件,即程序运行之后会在SD的根目录下产生calc.trace文件来保存运行时的数据。
把calc.trace文件通过命令adb pull/sdcard/calc.trace/tmp拷贝pc机的temp目录下,通过命令traceview calc.trace对calc.trace文件进行分析。
方法2、利用反汇编工具,目前Android提供的反汇编工具是Dexdump,这个工具只能得到Android可执行程序的类和函数的相关信息。
上述两种方法中,第一种需要源码,在没有源码的情况下,不能实现且里面包含的函数太多,对分析也会有很大的影响;第二种无法得到函数调用关系。
针对第二个问题:如何分析可以迁移到云端执行函数中那些函数在手机上运行比较耗时,具体可采用如下方法:
方法1、Android提供了一个自带分析工具:Traceview,它是一个图形化的工具,最终它会产生一个图表,用于对性能分析进行说明。这种工具需要应用程序的源代码且需要修改源码才能完成,它可以跟踪全部的方法,即包括库函数,底层虚拟机运行的函数以及程序中的所有函数,具体修改方法可参见针对第一问题所采用的方法1。
方法2、在应用程序源代码的函数的起始位置加入获得的函数,在函数的结束位置也加入获得时间函数,将得到的两个函数相减,从而得到函数的运行时间。
方法3、对应用程序的目标代码(即可执行程序)进行插桩,在目标代码中插入上述两种方法的函数的指令。
上述三种方法中,前两种需要有应用程序的源代码,在没有源代码的情况下就无能为力了,而第三种方法,由于Android的可执行程序(dex)文件内部非常的紧凑,它把一个应用程序的所有类(class)文件都打包在一个dex文件中,所以实现dex文件的插桩难度很大。
发明内容
本发明实施例提供了一种可迁移函数执行时间的获得方法及系统,以克服现有技术必须获得应用程序源代码或修改dex文件才可以获得函数调用关系和执行时间的缺陷。
本发明实施例提供了一种可迁移函数执行时间的获得方法,该方法包括:
对反汇编工具(Dexdump)源码进行修改,获得应用程序的可执行程序的函数调用关系;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210305374.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种酒厂制酒用水密封酒缸
- 下一篇:一种立式绕线器