The application discloses a method and device for improving the performance of code execution, and discloses a method and device for generating corresponding relation between variable identification and type, and a method and device for generating source code containing type annotated sentences. The methods consist of improving code execution performance: the relationship between access to the source code generated, marking variables and type; according to the corresponding relations, will be stored in the syntax tree format of the source code compiled for variable types defined after the executable code. Using the above method, can compile the source code according to the corresponding relationship between the pre generated variable types are limited, and generate variable types defined after the executable code, and executable code can reduce the memory space occupied, but also due to the reduction of the judgment process for all possible types, so the execute code execution rate correspondingly increased, the overall performance is improved.
【技术实现步骤摘要】
提高代码执行性能的方法及装置
本申请涉及软件开发
,具体涉及一种提高代码执行性能的方法及装置。本申请同时涉及一种生成变量标识与类型的对应关系的方法及装置,以及一种用于生成包含类型标注语句的源代码的方法及装置。
技术介绍
编程语言(programminglanguage),是用来定义计算机程序的形式语言,俗称“计算机语言”,种类多种多样,有的语言属于弱类型语言,有的语言属于强类型语言。在强类型语言中,变量类型有多种,例如int、char、float、boolean等,在定义变量时要明确指定其类型;而弱类型语言,在定义变量时通常不指定变量类型,并且在编译时也无法准确推导出变量类型。“弱类型”由于无需指定变量类型,因此为开发人员在代码开发阶段带来了灵活和便利,但是与此同时也导致了无法对相应代码进行高效优化。以JavaScript脚本语言为例,由于其具有简单、动态、基于原型、以及跨平台等特性已经被广泛用于Web应用开发中,JavaScript语言中的变量通常采用var或者const关键字定义,但是并没有明确的类型信息,因此也属于弱类型语言。用于解释执行JavaScr ...
【技术保护点】
一种提高代码执行性能的方法,其特征在于,包括:获取针对源代码预先生成的、变量标识与类型的对应关系;根据所述对应关系,将以语法树格式存储的所述源代码编译生成进行变量类型限定后的可执行代码。
【技术特征摘要】
1.一种提高代码执行性能的方法,其特征在于,包括:获取针对源代码预先生成的、变量标识与类型的对应关系;根据所述对应关系,将以语法树格式存储的所述源代码编译生成进行变量类型限定后的可执行代码。2.根据权利要求1所述的方法,其特征在于,在所述获取针对源代码预先生成的、变量标识与类型的对应关系之前,包括:至少根据所述源代码包含的预设格式的类型标注语句,生成所述变量标识与类型的对应关系。3.根据权利要求2所述的方法,其特征在于,至少根据所述源代码包含的预设格式的类型标注语句,生成所述变量标识与类型的对应关系,包括:逐句读取所述源代码中的语句,针对每个语句执行下述操作:判断所述语句是否为预设格式的类型标注语句;若是,执行下述操作:根据从所述语句中提取的变量标识以及相应类型信息生成对应关系条目,并添加到所述变量标识与类型的对应关系中。4.根据权利要求2所述的方法,其特征在于,至少根据所述源代码包含的预设格式的类型标注语句,生成所述变量标识与类型的对应关系,包括:逐句读取所述源代码中的语句,针对每个语句执行下述操作:判断所述语句是否为预设格式的类型标注语句;若是,执行下述操作:从所述语句中提取类型信息;根据所述语句与相应变量定义语句的位置关系,读取相应的变量定义语句并获取与提取的类型信息相对应的变量标识;将由获取的变量标识与相应类型信息组成的对应关系条目添加到所述变量标识与类型的对应关系中。5.根据权利要求4所述的方法,其特征在于,所述语句与相应变量定义语句的位置关系,包括:所述语句与相应变量定义语句相邻、且位于所述变量定义语句之前、或者之后。6.根据权利要求3或4所述的方法,其特征在于,所述类型标注语句的形式包括:字符串语句,或注释语句。7.根据权利要求2所述的方法,其特征在于,在通过语法解析生成所述以语法树格式存储的所述源代码的过程中,至少根据所述源代码包含的预设格式的类型标注语句,生成所述变量标识与类型的对应关系。8.根据权利要求1所述的方法,其特征在于,所述根据所述对应关系,将以语法树格式存储的所述源代码编译生成进行变量类型限定后的可执行代码,包括:逐句读取以语法树格式存储的所述源代码中的语句,并针对每个语句执行下述操作:判断所述语句是否满足以下条件:所述语句为变量运算语句、且其中至少存在一个运算变量在所述对应关系中具有对应的类型信息;若满足,根据从所述对应关系中获取的、所述语句包含的运算变量的类型信息,生成针对所述语句进行变量类型限定后的可执行代码;否则,针对所述语句生成未进行变量类型限定的可执行代码。9.根据权利要求1所述的方法,其特征在于,还包括:执行所述可执行代码。10.根据权利要求1-9任一项所述的方法,其特征在于,所述源代码是用弱类型语言编写的;所述弱类型语言包括:JavaScript语言。11.一种提高代码执行性能的装置,其特征在于,包括:对应关系获取单元,用于获取针对源代码预先生成的、变量标识与类型的对应关系;可执行代码生成单元,用于根据所述对应关系,将以语法树格式存储的所述源代码编译生成进行变量类型限定后的可执行代码。12.根据权利要求11所述的装置,其特征在于,还包括:对应关系生成单元;所述对应关系生成单元,用于至少根据所述源代码包含的预设格式的类型标注语句,生成所述变量标识与类型的对应关系。13.根据权利要求12所述的装置,其特征在于,所述对应关系生成单元,包括:代码读取及循环控制子单元,用于逐句读取所述源代码中的语句,并针对每个语句触发下列子单元工作;类型标注语句判断子单元,用于判断所述语句是否为预设格式的类型标注语句;第一对应关系条目生成及添加子单元,用于当所述类型标注语句判断子单元的输出为是时,根据从所述语句中提取的变量标识以及相应类型信息生成对应关系条目,并添加到所述变量标识与类型的对应关系中。14.根据权利要求12所述的装置,其特征在于,所述对应关系生成单元,包括:代码读取及循环控制子单元,用于逐句读取所述源代码中的语句,并针对每个语句触发下列子单元工作;类型标注语句判断子单元,用于判断所述语句是否为预设格式的类型标注语句;类型信息提取子单元,用于当所述类型标注语句判断子单元的输出为是时,从所述语句中提取类型信息;变量标识获取子单元,用于根据所述语句与相应变量定义语句的位置关系,读取相应的变量定义语句并获取与提取的类型信息相对应的变量标识;第二对应关系条目生成及添加子单元,用于将由获取的变量标识与相应类型信息组成的对应关系条目添加到所述变量标识与类型的对应关系中。15.根据权利要求12所述的装置,其特征在于,所述对应关系生成单元,具体用于在通过语法解析生成所述以语法树格式存储的所述源代码的过程中,至少根据所述源代码包含的预设格式的类型标注语句,生成所述变量标识与类型的对应关系。16.根据权利要求11所述的装置,其特征在于,所述可执行代码生成单元,包括:循环控制子单元,用于逐句读取以语法树格式存储的所述源代码中的语句,并针对每个语句触发下列子单元工作;优化条件判断子单元,用于判断所述语句是否满足以下条件:所述语句为变量运算语句、且其中至少存在一个运算变量在...
【专利技术属性】
技术研发人员:杨扬,张继鹏,王雷,苏丽丽,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛,KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。