一种提高源文件运行效率的装置和方法

文档序号:10470977阅读:171来源:国知局
一种提高源文件运行效率的装置和方法
【专利摘要】本发明公开了一种提高源文件运行效率的装置和方法,从源代码中依次提取各个方法体中的临时变量,并用简短的名称替代原来代码中的临时变量名称,简短名称首选单个字符。以此种方法进行源代码优化,可以提高代码在虚拟机中的运行效率,并且不会给程序员编程的复杂程度造成影响。同时为了保护成员变量不会误替换,增设了成员变量保护的内容。本方案在不影响编程人员工作复杂程度和效率,且不会影响程序运行的前提下,提高了源代码的运行效率。
【专利说明】
-种提高源文件运行效率的装置和方法
技术领域
[0001] 本发明设及源文件运行优化领域,具体设及一种提高源文件运行效率的装置和方 法。
【背景技术】
[0002] 随着高级编程语言的普及,项目代码量随着业务的越来越复杂,源文件数量不断 攀升,而为了便于记忆,不同的开发人员其编程风格往往也差别较大。运一点在变量命名上 体现得比较明显。一般初学者喜欢简洁一些的,因为没有太多的引用关系,而更多的人喜欢 变量名复杂一点采用单词拼凑的方式命名,运样便于阅读和理解。通常开发者命名的变量 名(或者参数名)是有一定意义的单词,或者是单词组合,肯定多余两个字母,我们当然鼓励 开发阶段的源代码是友好的,利于传阅的。但是对于临时变量却未必,尤其是开发完毕之 后,源文件经过编译之后在运行阶段,长串的变量名对于电脑机器而言其实并无意义。因为 机器并不会去理解变量名字本身的意义,变量名字只是一个代号,一个占位符而已,而大量 的长串名字变量会影响虚拟机的识别效率。也许一个两个参数名的改动对运行效率不会有 提升,但如今的代码几乎每一行都有一个变量,几乎每一个方法都有10来个变量,几乎每个 变量都会被引用Ξ五次,所W毫无疑问,大量优化变量名,可W提升虚拟机运行时的效率, 变量名应该越短越好。能用一个字母的变量名a,绝不用username。而由于长变量名更利于 程序员编写程序,对于虚拟机的运行效率甚至程序本身的优劣也有很大的影响。现有技术 多从开发者角度出发,建议开发人员添加注释、取名尽量直观、多用设计模式等,但忽略了 机器是没有意识的。注释越多,运行时反而更慢。所W需要一种可W自动将程序员在源代码 中使用的长串字符变量名替换为简短字符的技术方案。

【发明内容】

[0003] 为了克服上述【背景技术】的缺陷,本发明提供一种提高源文件运行效率的装置和方 法,可W自动、准确并且高效的将程序员在源代码中使用的长串字符变量名替换为简短字 符。
[0004] 为了解决上述技术问题本发明的所采用的技术方案为:
[0005] -种提高源文件运行效率的方法,包括:
[0006] 提取步骤,提取源文件中一个方法体内的临时变量;
[0007] 判断步骤,判断临时变量是否为重复变量,若否,则进入优化步骤;
[000引优化步骤,将临时变量的名称一一替换为优化变量名,优化变量名为按照顺序排 列的字符。
[0009] 较佳地,提取步骤还包括:记录源文件中的所有方法体,依次遍历各个方法体。
[0010] 较佳地,优化步骤还包括:在方法体内的临时变量名称全部替换成优化变量名后, 重置优化变量名。
[0011] 较佳地,判断步骤还包括,记录源文件中的所有全局变量,将临时变量与所有全局 变量进行比较,判断是否为重复变量。
[0012] 较佳地,优化步骤中的优化变量名为按照从小到大或者从大到小的顺序排列的英 文字母。
[0013] 本发明还提供一种提高源文件运行效率的装置,包括:
[0014] 提取模块,用于提取源文件中一个方法体内的临时变量,并将临时变量输出至判 断模块;
[0015] 判断模块,用于判断临时变量是否为重复变量,若否,则将临时变量输出至优化模 块;
[0016] 优化模块,用于将临时变量的名称一一替换为优化变量名,优化变量名为按照顺 序排列的字符。
[0017] 较佳地,提取模块包括方法记录单元和方法遍历单元,方法记录单元用于记录源 文件中的所有方法体,方法遍历单元用于依次遍历各个方法体。
[0018] 较佳地,优化模块包括:
[0019] 优化名记录单元,用于记录优化一个方法体时所使用的所有优化变量名;
[0020] 替换单元用于将临时变量名的名称替换为优化变量名,
[0021] 重置单元,用于在从提取模块接收到一个新的方法体开始优化之前,清空优化名 记录单元中记录的上一方法体优化过程中所使用过的所有优化变量名。
[0022] 较佳地,判断模块包括:
[0023] 全局变量记录单元,用于记录源文件中的所有全局变量;
[0024] 比较单元,用于将临时变量与所有全局变量进行比较,若相同,则判断为重复变 量。
[0025] 较佳地,优化模块还包括:优化名生成单元,用于按照从小到大或者从大到小的顺 序排列的英文字母生成优化变量名。
[0026] 本发明的有益效果在于:本发明从源代码中依次提取各个方法体中的临时变量, 并用简短的名称替代原来代码中的临时变量名称,简短名称名为按照从小到大或者从大到 小的顺序排列的英文字母。W此种方法进行源代码优化,可W提高代码在虚拟机中的运行 效率,并且不会给程序员编程的复杂程度造成影响。同时为了保护全局变量不会误替换,增 设了全局变量保护的方案,当替换临时变量之前,将该临时变量与记录的源代码中的全局 变量依次进行对比,若有重名,则判定为重复变量,并不进行替换动作。按照上述方案对源 代码中的每个方法体依次进行优化,进入下一个方法优化之前,所记录的优化变量名被清 空,运样可用作优化变量名的字符就更多,每次循环进入下一个待优化方法体的时候,优化 变量名的记录为空。本方案在不影响编程人员工作复杂程度和效率,且不会影响程序运行 的前提下,提高了源代码的运行效率。
【附图说明】
[0027] 图1为本发明实施例一的方法流程图;
[0028] 图2位本发明实施例一包括提取步骤和优化步骤的详细步骤在内的方法流程图;
[0029] 图3为本发明实施例一加入重置步骤的方法流程图;
[0030] 图4为本发明实施例一将重复变量保护具体设置为成员变量保护方案的方法流程 图;
[0031 ]图5为本发明实施例二的装置结构示意图;
[0032] 图6为本发明实施例二提取模块的结构示意图;
[0033] 图7为本发明实施例二优化模块的结构示意图;
[0034] 图8为本发明实施例二判断模块的结构示意图;
[0035] 图9为本发明实施例二优化模块的结构示意图加入具体优化名生成单元之后的结 构示意图。
【具体实施方式】
[0036] 下面结合附图和实施例对本发明做进一步的说明。
[0037] 实施例一
[0038] -种提高源文件运行效率的方法,如图1所示,包括:
[0039 ]提取步骤,提取源文件中一个方法体内的临时变量;
[0040] 判断步骤,判断临时变量是否为重复变量,若否,则进入优化步骤;
[0041] 优化步骤,将临时变量的名称一一替换为优化变量名,优化变量名为按照顺序排 列的字符。
[0042] 作为本实施例的一个示例
[0043] 记录源文件中的所有方法体,依次遍历各个方法体。
[0044] 具体来说,记录源文件中的所有方法体,依次遍历各个方法体,提取一个方法体中 的所有临时变量,完成优化步骤之后,循环将下一个方法体,直到所有方法体依次优化完 毕。
[0045] 如图2所示,上述内容的具体步骤包括:
[0046] 步骤1,导入源文件;
[0047] 步骤2,记录所述源文件中的所有方法体;
[004引步骤3,提取第η个方法中的所有临时变量,其中n=l,2,3……N,所述N为所述源文 件中所述方法体的个数;
[0049] 步骤4,判断第m个临时变量是否为重复变量,若是,则进入步骤6,若否,则进入5, 其中m= 1,2,3……M,所述Μ为第η个方法中的所有临时变量的个数;
[0050] 步骤5,生成并记录第m个优化变量名,用第m个优化变量名替换第m个临时变量;
[0051] 步骤6,判断m是否小于M,若是,使m=m+l,并回到步骤4,若否,则进入步骤7;
[0052] 步骤7,判断η是否小于N,若是,使n = n+l,并回到步骤3,若否,结束优化,并输出经 优化之后的源文件。
[0053] 作为本实施例的一个示例
[0054] 优化步骤还包括:在方法体内的临时变量名称全部替换成优化变量名后,重置优 化变量名。重置优化变量名也即清空上一方法体中使用过的所有优化变量名的记录。
[0055] 如图3所示,上述内容的具体步骤包括:
[0化6] 步骤1,导入源文件;
[0057]步骤2,记录所述源文件中的所有方法体;
[005引步骤3,提取第η个方法中的所有临时变量,其中n=l,2,3……N,所述N为所述源文 件中所述方法体的个数;
[0059] 步骤4,重置记录的所有优化变量名;
[0060] 步骤5,判断第m个临时变量是否为重复变量,若是,则进入步骤7,若否,则进入6, 其中m= 1,2,3……M,所述Μ为第η个方法中的所有临时变量的个数;
[0061 ]步骤6,生成并记录第m个优化变量名,用第m个优化变量名替换第m个临时变量;
[0062] 步骤7,判断m是否小于M,若是,使m=m+l,并回到步骤5,若否,则进入步骤8;
[0063] 步骤8,判断η是否小于N,若是,使n = n+l,并回到步骤3,若否,结束优化,并输出经 优化之后的源文件。
[0064] 作为本实施例的一个示例
[0065] 判断步骤还包括,记录源文件中的所有全局变量,将临时变量与所有全局变量进 行比较,判断是否为重复变量。
[0066] 如图4所示,上述内容的具体步骤包括:
[0067] 步骤1,导入源文件;
[0068] 步骤2,记录所有全局变量;
[0069] 步骤3,记录所述源文件中的所有方法体;
[0070] 步骤4,提取第η个方法中的所有临时变量,其中n= 1,2,3……N,所述N为所述源文 件中所述方法体的个数;
[0071 ]步骤5,重置记录的所有优化变量名;
[0072] 步骤6,判断第m个临时变量是否与全局变量重名,若是,则进入步骤8,若否,则进 入7,其中m= 1,2,3……M,所述Μ为第η个方法中的所有临时变量的个数;
[0073] 步骤7,生成并记录第m个优化变量名,用第m个优化变量名替换第m个临时变量;
[0074] 步骤8,判断m是否小于M,若是,使m=m+l,并回到步骤6,若否,则进入步骤9;
[0075] 步骤9,判断η是否小于N,若是,使n = n+l,并回到步骤4,若否,结束优化,并输出经 优化之后的源文件。
[0076] 本示例进行变量名的优化只改动临时变量,而不能改动类成员属性,因为类成员 属性也即全局变量有可能在外部被引用,一旦改动将可能会报错,运是不可预知的。而临时 变量有明确的使用范围,只在当前方法内有效,出了方法体,其生命周期就结束了。
[0077] W JAVA语言为例,临时变量与全局变量(成员变量)有时会重名,当运种冲突出现 时,JAVA语言规定要W前缀this和super来区分是成员变量还是临时变量,所W只能对非 this和super开头的变量名进行重新命名。
[0078] 作为本实施例的一个示例
[0079] 优化步骤中的优化变量名为按照从小到大或者从大到小的顺序排列的英文字母。 优化变量名应是简短的名字,包括单个字符和两位字符串,且首选单个字符。
[0080] -般而言,一个方法体的参数不会太多,方法体内的临时变量也不会太多,所W, a-z运26个字母可W代表26个参数名,基本也足够了。WJAVA为例,一个旧源文件的方法 process的定义如下:
[0081]
[0082] 假设该方法体出现了 Ξ个变量,分别为name、age、acMress,
[0083] 那么更换过程中,名字生成器依次记录:
[0084] 因 year 生成 a [00化]因 month生成b,
[00化]因 day生成C,
[0087] 因 hour 生成 d,
[0088] 因 minute 生成 d,
[0089] 因 name 生成 f,
[0090] 因 age 生成 g,
[0091 ]因 acMress 生成 h,
[0092] 经优化之后的源文件的为:
[0093]
[0094] Name = 乂
[0095] Age =〉g
[0096] Address = >h
[0097] 完毕之后,在进行下一个方法比如domain时,名字生成器将被清空,又可W依次从 a开始生成。
[0098] 首选单个字符,当一个方法中的临时变量超过一定数量,单个字符不够用时,使用 双字符串作为简单的名称,一般来说在一个方法中运种排列组合而成的名称个数足够替代 其中的临时变量,即使不够也可W采用Ξ位的字符串。
[0099] 实施例二
[0100] -种提高源文件运行效率的装置,如图5所示,包括:
[0101] 提取模块,用于提取源文件中一个方法体内的临时变量,并将临时变量输出至判 断模块;
[0102] 判断模块,用于判断临时变量是否为重复变量,若否,则将临时变量输出至优化模 块;
[0103] 优化模块,用于将临时变量的名称一一替换为优化变量名,优化变量名为按照顺 序排列的字符。
[0104] 作为本实施例的一个示例
[0105] 如图6所示,提取模块包括方法记录单元和方法遍历单元,方法记录单元用于记录 源文件中的所有方法体,方法遍历单元用于依次遍历各个方法体。
[0106] 作为本实施例的一个示例
[0107] 如图7所示,优化模块包括:
[0108] 优化名记录单元,用于记录优化一个方法体时所使用的所有优化变量名;
[0109] 替换单元,用于将临时变量名的名称替换为优化变量名;
[0110] 重置单元,用于在从提取模块接收到一个新的方法体开始优化之前,清空优化名 记录单元中记录的上一方法体优化过程中所使用过的所有优化变量名。
[0111] 临时变量包括两种,第一种是方法参数,第二种是方法体内部的临时变量。两种都 是临时变量,都依赖方法,仅是位置不同,差别不大。本实施例的优化模块也有记录功能,记 录了一个方法体的所有临时变量名和对应的位置,然后将当前方法体中出现相应变量名的 地方全都更改为较为简短的参数名。
[0112] 作为本实施例的一个示例
[0113] 如图8所示,判断模块包括:
[0114] 全局变量记录单元,用于记录源文件中的所有全局变量;
[0115] 比较单元,用于将临时变量与所有全局变量进行比较,若相同,则判断为重复变 量。
[0116] 作为本实施例的一个示例
[0117] 如图9所示,优化模块还包括:优化名生成单元,用于按照从小到大或者从大到小 的顺序排列的英文字母生成优化变量名。
[0118] 应当理解的是,对本领域普通技术人员来说,可W根据上述说明加 W改进或变换, 而所有运些改进和变换都应属于本发明所附权利要求的保护范围。
【主权项】
1. 一种提高源文件运行效率的方法,其特征在于: 提取步骤,提取源文件中一个方法体内的临时变量; 判断步骤,判断所述临时变量是否为重复变量,若否,则进入优化步骤; 优化步骤,将所述临时变量的名称一一替换为优化变量名,所述优化变量名为按照顺 序排列的字符。2. 根据权利要求1所述的一种提高源文件运行效率的方法,其特征在于,所述提取步骤 还包括:记录所述源文件中的所有方法体,依次遍历各个所述方法体。3. 根据权利要求2所述的一种提高源文件运行效率的方法,其特征在于,所述优化步骤 还包括:在所述方法体内的临时变量名称全部替换成所述优化变量名后,重置所述优化变 量名。4. 根据权利要求1所述的一种提高源文件运行效率的方法,其特征在于:所述判断步骤 还包括,记录所述源文件中的所有全局变量,将所述临时变量与所述所有全局变量进行比 较,判断是否为重复变量。5. 根据权利要求1所述的一种提高源文件运行效率的方法,其特征在于:所述优化步骤 中的所述优化变量名为按照从小到大或者从大到小的顺序排列的英文字母。6. -种提高源文件运行效率的装置,其特征在于,包括: 提取模块,用于提取源文件中一个方法体内的临时变量,并将所述临时变量输出至判 断丰吴块; 判断模块,用于判断所述临时变量是否为重复变量,若否,则将所述临时变量输出至优 化模块; 优化模块,用于将所述临时变量的名称一一替换为优化变量名,所述优化变量名为按 照顺序排列的字符。7. 根据权利要求6所述的一种提高源文件运行效率的装置,其特征在于:所述提取模块 包括方法记录单元和方法遍历单元,所述方法记录单元用于记录所述源文件中的所有方法 体,方法遍历单元用于依次遍历各个所述方法体。8. 根据权利要求7所述的一种提高源文件运行效率的装置,其特征在于,所述优化模块 包括: 优化名记录单元,用于记录优化一个方法体时所使用的所有所述优化变量名; 替换单元用于将所述临时变量名的名称替换为优化变量名, 重置单元,用于在从所述提取模块接收到一个新的方法体开始优化之前,清空所述优 化名记录单元中记录的上一方法体优化过程中所使用过的所有所述优化变量名。9. 根据权利要求8所述的一种提高源文件运行效率的装置,其特征在于,所述判断模块 包括: 全局变量记录单元,用于记录所述源文件中的所有全局变量; 比较单元,用于将所述临时变量与所述所有全局变量进行比较,若相同,则判断为重复 变量。10. 根据权利要求8所述的一种提高源文件运行效率的装置,其特征在于,所述优化模 块还包括:优化名生成单元,用于按照从小到大或者从大到小的顺序排列的英文字母生成 所述优化变量名。
【文档编号】G06F9/45GK105824681SQ201610190490
【公开日】2016年8月3日
【申请日】2016年3月30日
【发明人】周维
【申请人】上海斐讯数据通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1