[发明专利]针对动态语言的处理及优化方法、装置、设备及存储介质有效
申请号: | 201810213504.X | 申请日: | 2018-03-15 |
公开(公告)号: | CN110275709B | 公开(公告)日: | 2023-07-25 |
发明(设计)人: | 苏振宇;吴哲锋;孙哲;徐伟刚;金一华 | 申请(专利权)人: | 斑马智行网络(香港)有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 上海华诚知识产权代理有限公司 31300 | 代理人: | 徐颖聪 |
地址: | 中国香港九龙长沙湾道*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 针对 动态 语言 处理 优化 方法 装置 设备 存储 介质 | ||
本公开提出了一种针对动态语言的处理及优化方法、装置、设备及存储介质。基于中间文件中的程序代码分析得到抽象语法树,基于中间文件中的标注信息分析得到相应程序代码的类型描述信息,并将类型描述信息附加到抽象语法树上相应的节点上。遍历抽象语法树,以基于节点间的关联关系以及节点的类型描述信息,得到类构造的对象所拥有的属性及类型信息,以生成隐藏类,并将隐藏类附加到该对象所对应的类定义节点上,以便基于带有隐藏类的抽象语法树,生成优化代码。由此,通过在编译时预生成隐藏类,可以提前知道对象布局信息,从而可以基于预生成的隐藏类,对源文件进行优化以避免运行时添加属性创建隐藏类和扩展对象布局的开销,提高运行速率。
技术领域
本公开涉及编程领域,特别是涉及一种针对动态语言的处理及优化方法、装置、设备及存储介质。
背景技术
静态语言(也即静态类型语言)是在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型。例如,C++、Java、Delphi、C#等都是静态语言。
与静态语言不同,动态语言(也即动态类型语言)是在运行时确定数据类型的语言,变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。例如,PHP、ASP、Ruby、Python、Perl、ABAP、SQL、JavaScript、Unix Shell等都是动态语言。
对于动态语言而言,类型判断、对象的内存分配等一系列操作一般是在运行期间执行的,使得基于动态语言编写的程度的运行性能较慢,降低用户的使用体验。
因此,需要一种能够对基于动态语言编写的程序进行优化的方案。
发明内容
本公开的一个目的在于提供一种能够对基于动态语言编写的程序进行优化的方案。
根据本公开的第一个方面,提供了一种针对动态语言的优化方法,用于对基于动态语言编写的源文件进行优化,包括:基于源文件获得带有标注信息的中间文件,标注信息用于标注源文件中的至少部分程序代码的数据类型;基于中间文件中的程序代码进行分析得到抽象语法树,其中,对标注信息进行分析得到相应程序代码的类型描述信息,并且将类型描述信息附加到抽象语法树上相应程序代码对应的节点上;遍历抽象语法树,以基于节点间的关联关系以及节点的类型描述信息,得到类构造的对象所拥有的属性及类型信息,根据属性及类型信息生成隐藏类,并将隐藏类附加到该对象所对应的类定义节点上;基于抽象语法树以及类定义节点上的隐藏类,生成优化代码。
可选地,类型描述信息包括以下一项或多项:基本类型;对象类型;函数类型;布尔类型;无类型。
可选地,基于源文件获得带有标注信息的中间文件的步骤包括:对源文件中至少部分程序代码的数据类型进行标注,以得到中间文件。
可选地,源文件是经过第一类型系统标注得到的,基于源文件获得带有标注信息的中间文件的步骤包括:将源文件中的标注信息转换为对应于第二类型系统的标注信息,并保留源文件中的程序代码本身的语义,以得到中间文件。
可选地,第一类型系统是TypeScript或Flow.js,并且/或者第二类型系统支持基本类型、对象类型、函数类型、布尔类型以及无类型。
可选地,第二类型系统中对象类型、函数类型以及数组类型之间不可相互转化,并且/或者,第二类型系统中数组类型的索引为标量类型。
可选地,对于抽象语法树中对应于同一类的节点,遍历该类的所有节点,根据节点的类型描述信息,得到该类所构造的对象所拥有的属性及类型信息,根据属性及类型信息,生成该类的隐藏类。
可选地,生成优化代码的步骤包括:遍历抽象语法树,为每个节点生成代码。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于斑马智行网络(香港)有限公司,未经斑马智行网络(香港)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810213504.X/2.html,转载请声明来源钻瓜专利网。