[发明专利]一种lua代码执行性能的静态分析方法在审
申请号: | 201811076496.5 | 申请日: | 2018-09-14 |
公开(公告)号: | CN109324949A | 公开(公告)日: | 2019-02-12 |
发明(设计)人: | 刘马良;刘美智;刘明城;沈旭军;梁琪 | 申请(专利权)人: | 珠海金山网络游戏科技有限公司;珠海西山居移动游戏科技有限公司 |
主分类号: | G06F11/30 | 分类号: | G06F11/30;G06F11/32;G06F11/34;G06F11/36 |
代理公司: | 广州嘉权专利商标事务所有限公司 44205 | 代理人: | 俞梁清 |
地址: | 519000 广东省珠海市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 代码执行 静态分析 调用 指令 源代码编译 函数执行 静态扫描 性能分析 指令估算 绑定 权重 研发 优化 估算 维护 开发 | ||
本发明的技术方案包括一种lua代码执行性能的静态分析方法,包括如下步骤:将待测lua源代码编译为指令;计算并绑定每条指令的权重;根据各个函数执行的指令估算函数的调用性能;根据各个函数的调用性能分析整个lua代码的性能;本发明通过在开发阶段,静态扫描代码,估算代码性能,从而尽早对劣质代码进行优化,提高了研发效率和代码性能,降低了后期维护和优化难度。
技术领域
本发明涉及一种lua代码执行性能的静态分析方法,属于计算机软件性能优化领域。
背景技术
目前lua语言使用较为广泛,部分游戏服务器甚至游戏引擎也支持lua语言开发(如使用较为广泛的unity游戏引擎)。在项目中,lua代码质量好坏直接影响游戏性能,这样保证项目中的lua代码性能高效就变得尤为重要,传统对lua代码性能的测算往往需要在游戏运行期才介入性能优化,有时候若要对代码进行优化需要牵扯到很多代码的修改,如果等游戏发布运行后再进行性能优化,可能需要更大的工作量,难度也有可能变得更大。若能在开发阶段就能测试代码性能,以优化代码,提高性能,则能极大提高研发效率。但现存的一些lua代码扫描工具(如google的luachecker)只能扫描代码静态问题,例如变量是否定义等等,无法在开发期间预估代码性能。
发明内容
为解决上述问题,本发明的目的在于提供一种lua代码执行性能的静态分析方法,可以通过静态扫描,估算lua中各个函数运行时的性能开销,并将结果反馈给研发人员优化,做到开发阶段进行代码性能优化,极大提高了研发效率,降低了后期维护优化的难度。
本发明解决其问题所采用的技术方案是:
一种lua代码执行性能的静态分析方法,包括如下步骤:将待测lua源代码编译为指令;计算并绑定每条指令的权重;根据各个函数执行的指令估算函数的调用性能;根据各个函数的调用性能分析整个lua代码的性能。
进一步,所述将待测lua源代码编译为指令,具体包括:使用luac将源代码编译为字节码;根据指令的格式从所述字节码中解析识别出其中的指令;将指令按源代码中的函数统计归类。
进一步,所述计算并绑定每条指令的权重,具体包括:使用虚拟机解释执行所述指令,获取执行各指令所消耗的时间,将各指令消耗的时间绑定为各指令对应的权重。
进一步,所述使用虚拟机解释执行所述指令,获取执行各指令所消耗的时间,将各指令消耗的时间绑定为各指令对应的权重,具体包括:对每条指令执行N次,分别计算出每条指令执行N次的总耗时;分别计算每条指令执行一次的平均耗时,并将其绑定为对应指令的权重。
进一步,所述根据各个函数执行的指令估算函数的调用性能,包括:分别对每个函数创建一个原型,所述原型包括函数执行的一组指令和函数所要用到的数据表;分别计算每个函数执行其指令的总耗时,得到各个函数的调用性能。
进一步,所述分别计算每个函数执行其指令的总耗时,包括:统计各个函数下所有指令执行的次数;将每条指令执行的次数与其对应的权重相乘,得到执行每条指令的耗时;分别对各个函数的所有指令的耗时求和,得到各个函数的调用性能。
进一步,根据各个函数的调用性能分析整个lua代码的性能,包括:根据各个函数执行指令的耗时进行排序,查找耗时较多的函数并对其进行优化。
进一步,上述函数的性能开销包括函数内部的性能开销和调用的子函数的性能开销,所述性能开销即为执行指令的耗时。
进一步,上述函数的性能开销仅包括函数内部的性能开销,不包括调用的子函数的性能开销,所述性能开销即为执行指令的耗时。
本发明的有益效果是:本发明采用的一种lua代码执行性能的静态分析方法,通过在开发阶段,静态扫描代码,估算代码性能,从而提前对劣质代码进行优化,提高了研发效率和代码性能,降低了后期维护和优化难度。
附图说明
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于珠海金山网络游戏科技有限公司;珠海西山居移动游戏科技有限公司,未经珠海金山网络游戏科技有限公司;珠海西山居移动游戏科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811076496.5/2.html,转载请声明来源钻瓜专利网。