[发明专利]程序调用的优化方法及装置有效
申请号: | 201711160655.5 | 申请日: | 2017-11-20 |
公开(公告)号: | CN107861807B | 公开(公告)日: | 2021-06-25 |
发明(设计)人: | 任太胜;易新;王浩 | 申请(专利权)人: | 北京奇虎科技有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 北京律诚同业知识产权代理有限公司 11006 | 代理人: | 王玉双 |
地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序 调用 优化 方法 装置 | ||
本发明公开了一种程序调用的优化方法及装置,涉及一种应用开发技术领域,主要目的在于解决现有安卓7.0之后的版本中,由于JIT技术是在函数调用时进行动态优化,即程序运行时动态翻译dex到本地函数,针对动态优化,无法保证JIT优化处理的函数在下一次函数调用时,调用的是优化后的函数,导致无法调用的问题。主要技术方案:当触发调用被优化函数操作时,判断优化函数是否执行挂钩操作;若所述优化函数执行挂钩操作,则所述优化函数通过跳转模板结合预设处理操作对所述被优化函数进行优化处理,所述跳转模板用于对所述被优化函数进行优化。主要用于程序调用的优化。
技术领域
本发明涉及一种应用开发技术领域,特别是涉及一种程序调用的优化方法及装置。
背景技术
随着操作系统应用开发技术的快速发展,使用虚拟化技术对操作系统底层进行处理、开发以及成为主流手段。其中,安卓运行时(Android runtime,ART)虚拟机区别于传统的Dalvik虚拟机,使用预编译技术取代Dalvik中的及时编译技术,加快了应用程序的启动和执行。
目前,安卓4.4版本中安卓系统使用的ART虚拟机采用准时制生产方式JIT技术来对ART虚拟机在多开应用过程中进行解释执行的动态优化,动态优化仅限于本次进程可以正常运行的情况,为了节省时间,ART虚拟机安装时不做动态优化,在运行调用的函数是否进行平衡调用来进行动态优化,即将dex确定为本地函数,仅仅限于当前进程存活的情况下,但是,安卓7.0之后的版本中,由于JIT技术是在函数调用时进行动态优化,即程序运行时动态翻译dex到本地函数,针对动态优化,无法保证JIT优化处理的函数在下一次函数调用时,调用的是优化后的函数,导致无法调用,对程序调用的优化已经成为亟待解决的问题。
发明内容
有鉴于此,本发明提供一种程序调用的优化方法及装置,主要目的在于解决现有安卓7.0之后的版本中,由于JIT技术是在函数调用时进行动态优化,即程序运行时动态翻译dex到本地函数,针对动态优化,无法保证JIT优化处理的函数在下一次函数调用时,调用的是优化后的函数,导致无法调用的问题。
依据本发明一个方面,提供了一种程序调用的优化方法,包括:
当触发调用被优化函数操作时,判断优化函数是否执行挂钩操作;
若所述优化函数执行挂钩操作,则所述优化函数通过跳转模板结合预设处理操作对所述被优化函数进行优化处理,所述跳转模板用于对所述被优化函数进行优化。
进一步地,所述方法还包括:
若所述优化函数没有执行挂钩操作,则直接采用预设处理操作以及所述优化函数处理所述被优化函数。
进一步地,所述若所述优化函数执行所述挂钩操作,则所述优化函数通过跳转模板结合预设处理操作对所述被优化函数进行优化处理包括:
当所述优化函数通过Hook函数钩取被优化函数时,判断所述被优化函数中是否存在跳转标识;
若存在跳转标识,则解析所述被优化函数中的参数;
若所述参数的转换格式标识小于预设转换条件,则通过预置指向指令跳转至替换函数进行处理;
当所述替换函数执行完毕后,根据所述优化函数的业务需求判断是否执行第一跳转指令,若所述业务需求确定为执行优化函数,则执行所述第一跳转指令,所述第一跳转指令用于跳转至所述优化函数;
通过预设处理操作使得所述优化函数处理所述被优化函数。
进一步地,所述方法还包括:
若所述参数的转换格式标识大于预设转换条件,则执行第二跳转指令,所述二跳转指令用于跳转至所述被优化函数。
进一步地,所述当所述优化函数通过Hook函数钩取被优化函数时,判断所述被优化函数中是否存在跳转标识包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司,未经北京奇虎科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711160655.5/2.html,转载请声明来源钻瓜专利网。