一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

代码文件的优化方法、装置、电子设备及存储介质与流程

2022-12-13 23:18:54 来源:中国专利 TAG:


1.本技术涉及代码技术领域,特别涉及一种代码文件的优化方法、装置、电子设备及存储介质。


背景技术:

2.随着智能网联汽车的发展,基于android操作系统的车机越来越普及,则对渲染的需求逐渐增多,其中对于3d渲染质量、实时和性能的要求越来越高,因此针对3d渲染流程的任何优化都显得尤其重要,glsl即opengl着色语言,是用来在opengl中着色编程的语言,该语言编写的代码是在gpu(graphic processor unit图形处理单元)上执行的,代替了固定的渲染管线的一部分。
3.相关技术中,shader代码是跑在gpu上的程序,要从gpu反馈信息是很耗性能的操作,导致调试难度很大,而在较大项目中,shader代码会非常多且繁杂,如果按照功能进行文件隔离划分,那么从整体来看shader会非常容易出错且会存在不合理代码未被发现。


技术实现要素:

4.本技术提供一种代码文件的优化方法、装置、电子设备及存储介质,以解决相关技术中无法对无用代码或是错误代码进行剔除,导致占用面积大,降低工作效率,降低代码的性能等问题。
5.本技术第一方面实施例提供一种代码文件的优化方法,包括以下步骤:获取目标代码的顶点文件和像素文件;分别加载所述顶点文件和所述像素文件得到所述顶点文件和所述像素文件对应的代码字符串,解析所述代码字符串的语法,得到语法树,并利用预设剔除策略剔除所述语法树中不满足预设条件的无用代码,得到所述顶点文件的顶点字符串和所述像素文件的像素字符串;匹配所述顶点字符串和所述像素字符串之间的引用关系,并利用所述引用关系剔除所述顶点字符串和所述像素字符串中预设错误,得到剔除后的所述顶点字符串和所述像素字符串,基于所述剔除后的所述顶点字符串和所述像素字符串分别生成新顶点文件和新像素文件,达到优化目的。
6.根据上述技术手段,本技术实施例对获取到的代码的顶点文件以及像素文件进行加载得到对应的代码字符串,然后进行语法的处理,剔除不满足条件的代码,得到顶点文件的定点字符串以及像素文件的像素字符串并利用引用关系进行匹配,剔除掉错误字符串得到剔除后的顶点字符串和像素字符串,并分别生成新顶点文件和新像素文件,对于无用代码以及错误代码进行剔除,减少代码占用面积,达到优化目的,从而提高代码的运行效率。
7.可选地,所述利用预设剔除策略剔除所述语法树中不满足预设条件的无用代码,得到所述顶点文件的顶点字符串和所述像素文件的像素字符串,包括:
8.在识别到所述语法树中存在常量定义时,进行常量折叠;和/或者,在识别到所述语法树中存在预设相等检查时,判断所述预设相等检查对应的代码无效,并剔除所述代码;和/或者,扫描所述语法树的所有叶子节点,剔除临时变量,将所述语法树的表达式替换所
述临时变量被使用的位置;和/或者,在识别到函数时,根据引用关系匹配调用的代码位置,判断是否内联,如果是,则剔除所述函数,并将所述函数的内容替换到函数调用位置;和/或者,在识别到存在没有引用关系的预设局部变量、预设常量或预设结构体时,剔除所述预设局部变量、预设常量或预设结构体对应的代码;和/或者,在识别到所述目标代码的第一预设关键字时,判断预设关键字是否处于预设条件分支代码中,如果是,则增加临时变量所述预设关键字移动值所述预设条件分支外;和/或者,在识别到对结构体内部变量进行单步赋值时,将单步赋值替换为预设swizzle操作;和/或者,在识别到循环的表达式时,在其内部寻找第二预设关键字,并通过定义标识符替换所述第二预设关键字的处理逻辑,并在识别到返回代码时,通过定义标识符替换将所述返回操作,并将所述返回操作移动到函数的尾部。
9.根据上述技术手段,本技术实施例对于识别到的不同语法利用不同的剔除策略剔除掉或是替换掉不满足条件的无用代码,减少赋值以及函数调用的性能消耗,达到优化目的,从而提高代码的运行效率。
10.可选地,所述匹配所述顶点字符串和所述像素字符串之间的引用关系,包括:匹配所述顶点字符串和所述像素字符串的全局变量和所述目标代码的内建变量;如果匹配到所述全局变量和所述内建变量,则基于所述全局变量和所述内建变量生成所述引用关系,否则判定匹配失败,并发送异常信息至命令行。
11.根据上述技术手段,本技术实施例匹配顶点字符串和像素字符串的全局变量以及代码的内建变量,若是可以匹配到,则生成引用关系,若是匹配失败,则将异常信息发送至命令行,通过匹配顶点字符串和像素字符串之间的引用关系,方便判断这个字符串是否满足需求或是存在错误,进而做出相应的操作,从而达到优化目的,从而提高代码的运行效率。
12.可选地,所述分别加载所述顶点文件和所述像素文件得到所述顶点文件和所述像素文件对应的代码字符串,包括:获取所述顶点文件和所述像素文件的文件路径;根据所述文件路径定位所述顶点文件和所述像素文件,并读取所述顶点文件和所述像素文件对应的代码字符串。
13.根据上述技术手段,本技术实施例获取到顶点文件和像素文件的文件路径,并根据文件路径定位到文件位置,从中获取顶点文件和像素文件对应的代码字符串,通过加载相关文件方便查找获取到所需代码字符串,提升工作效率,节省时间。
14.本技术第二方面实施例提供一种代码文件的优化装置,包括:获取模块,用于获取目标代码的顶点文件和像素文件;第一处理模块,用于分别加载所述顶点文件和所述像素文件得到所述顶点文件和所述像素文件对应的代码字符串,解析所述代码字符串的语法,得到语法树,并利用预设剔除策略剔除所述语法树中不满足预设条件的无用代码,得到所述顶点文件的顶点字符串和所述像素文件的像素字符串;第二处理模块,用于匹配所述顶点字符串和所述像素字符串之间的引用关系,并利用所述引用关系剔除所述顶点字符串和所述像素字符串中预设错误,得到剔除后的所述顶点字符串和所述像素字符串,基于所述剔除后的所述顶点字符串和所述像素字符串分别生成新顶点文件和新像素文件,达到优化目的。
15.可选地,所述第一处理模块用于:在识别到所述语法树中存在常量定义时,进行常
量折叠;和/或者,在识别到所述语法树中存在预设相等检查时,判断所述预设相等检查对应的代码无效,并剔除所述代码;和/或者,扫描所述语法树的所有叶子节点,剔除临时变量,将所述语法树的表达式替换所述临时变量被使用的位置;和/或者,在识别到函数时,根据引用关系匹配调用的代码位置,判断是否内联,如果是,则剔除所述函数,并将所述函数的内容替换到函数调用位置;和/或者,在识别到存在没有引用关系的预设局部变量、预设常量或预设结构体时,剔除所述预设局部变量、预设常量或预设结构体对应的代码;和/或者,在识别到所述目标代码的第一预设关键字时,判断预设关键字是否处于预设条件分支代码中,如果是,则增加临时变量所述预设关键字移动值所述预设条件分支外;和/或者,在识别到对结构体内部变量进行单步赋值时,将单步赋值替换为预设swizzle操作;和/或者,在识别到循环的表达式时,在其内部寻找第二预设关键字,并通过定义标识符替换所述第二预设关键字的处理逻辑,并在识别到返回代码时,通过定义标识符替换将所述返回操作,并将所述返回操作移动到函数的尾部。
16.可选地,所述第一处理模块用于:获取所述顶点文件和所述像素文件的文件路径;根据所述文件路径定位所述顶点文件和所述像素文件,并读取所述顶点文件和所述像素文件对应的代码字符串。
17.本技术第三方面实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如上述实施例所述的代码文件的优化方法。
18.本技术第四方面实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,以用于实现如上述实施例所述的代码文件的优化方法。
19.由此,本技术至少具有如下有益效果:
20.(1)本技术实施例对获取到的代码的顶点文件以及像素文件进行加载得到对应的代码字符串,然后进行语法的处理,剔除不满足条件的代码,得到顶点文件的定点字符串以及像素文件的像素字符串并利用引用关系进行匹配,剔除掉错误字符串得到剔除后的顶点字符串和像素字符串,并分别生成新顶点文件和新像素文件,对于无用代码以及错误代码进行剔除,减少代码占用面积,达到优化目的,从而提高代码的运行效率。
21.(2)本技术实施例对于识别到的不同语法利用不同的剔除策略剔除掉或是替换掉不满足条件的无用代码,减少赋值以及函数调用的性能消耗,达到优化目的,从而提高代码的运行效率。
22.(3)本技术实施例匹配顶点字符串和像素字符串的全局变量以及代码的内建变量,若是可以匹配到,则生成引用关系,若是匹配失败,则将异常信息发送至命令行,通过匹配顶点字符串和像素字符串之间的引用关系,方便判断这个字符串是否满足需求或是存在错误,进而做出相应的操作,从而达到优化目的,从而提高代码的运行效率。
23.(4)本技术实施例获取到顶点文件和像素文件的文件路径,并根据文件路径定位到文件位置,从中获取顶点文件和像素文件对应的代码字符串,通过加载相关文件方便查找获取到所需代码字符串,提升工作效率,节省时间。
24.本技术附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本技术的实践了解到。
附图说明
25.本技术上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
26.图1为根据本技术实施例的代码文件的优化方法的流程示意图;
27.图2为根据本技术实施例的代码文件的优化方法的处理流程图;
28.图3为根据本技术实施例的代码文件的优化装置的方框示意图;
29.图4为根据本技术实施例的电子设备的结构示意图。
具体实施方式
30.下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本技术,而不能理解为对本技术的限制。
31.下面参考附图描述本技术实施例的代码文件的优化方法、装置、电子设备及存储介质。针对上述背景技术中提到的无法对无用代码或是错误代码进行剔除,降低工作效率,降低代码的性能的问题,本技术提供了一种代码文件的优化方法,在该方法中,通过对shader代码文件进行剔除和改进输出一份新的shader代码文件,然后在opengl程序运行时达到优化效果。由此,解决了相关技术中无法对无用代码或是错误代码进行剔除,降低工作效率,降低代码的性能等问题。
32.具体而言,图1为本技术实施例所提供的一种代码文件的优化方法的流程示意图。
33.如图1所示,该代码文件的优化方法包括以下步骤:
34.在步骤s101中,获取目标代码的顶点文件和像素文件。
35.可以理解的是,本技术实施例通过获取到的代码文件和像素文件为后续对文件中相对应的代码字符串进行解析做准备。
36.在步骤s102中,分别加载顶点文件和像素文件得到顶点文件和像素文件对应的代码字符串,解析代码字符串的语法,得到语法树,并利用预设剔除策略剔除语法树中不满足预设条件的无用代码,得到顶点文件的顶点字符串和像素文件的像素字符串。
37.其中,预设剔除策略可以是用户事先设置的剔除策略,例如:将#define定义的内容进行置换,然后将#define从代码中删除等;或是将定义的常量剔除等策略,可根据实际情况进行调整,在此不做具体限定。
38.其中,预设条件可以是用户事先设置的条件,例如:代码字符串的语法检查中无错误,在此不做具体限定。
39.可以理解的是,本技术实施例对代码的顶点文件以及像素文件进行加载并得到对应的代码字符串,然后进行语法的处理,剔除不满足条件的代码,得到顶点文件的定点字符串以及像素文件的像素字符串,达到优化目的,从而提高代码的运行效率。
40.在本技术实施例中,分别加载顶点文件和像素文件得到顶点文件和像素文件对应的代码字符串,包括:获取顶点文件和像素文件的文件路径;根据文件路径定位顶点文件和像素文件,并读取顶点文件和像素文件对应的代码字符串。
41.可以理解的是,本技术实施例获取到顶点文件和像素文件的文件路径,并根据文件路径定位到文件位置,从中获取顶点文件和像素文件对应的代码字符串,通过加载相关
文件方便查找获取到所需代码字符串,提升工作效率,节省时间。
42.在本技术实施例中,利用预设剔除策略剔除语法树中不满足预设条件的无用代码,得到顶点文件的顶点字符串和像素文件的像素字符串,包括:在识别到语法树中存在常量定义时,进行常量折叠;和/或者,在识别到语法树中存在预设相等检查时,判断预设相等检查对应的代码无效,并剔除代码;和/或者,扫描语法树的所有叶子节点,剔除临时变量,将语法树的表达式替换临时变量被使用的位置;和/或者,在识别到函数时,根据引用关系匹配调用的代码位置,判断是否内联,如果是,则剔除函数,并将函数的内容替换到函数调用位置;和/或者,在识别到存在没有引用关系的预设局部变量、预设常量或预设结构体时,剔除预设局部变量、预设常量或预设结构体对应的代码;和/或者,在识别到目标代码的第一预设关键字时,判断预设关键字是否处于预设条件分支代码中,如果是,则增加临时变量预设关键字移动值预设条件分支外;和/或者,在识别到对结构体内部变量进行单步赋值时,将单步赋值替换为预设swizzle操作;和/或者,在识别到循环的表达式时,在其内部寻找第二预设关键字,并通过定义标识符替换第二预设关键字的处理逻辑,并在识别到返回代码时,通过定义标识符替换将返回操作,并将返回操作移动到函数的尾部。
43.其中,预设相等检查可以用户事先设置的相等检查,例如:在条件判断时,关系运算符左右的变量有可能出现必然结果的情况,比如左边的变量始终为空,或者左右的变量始终相等等情况,在此不做具体限定。
44.其中,预设局部变量可以是内部变量,是指在一个函数内部或复合语句内部定义的变量,例如:以没有引用关系的局部变量为例,是指局部变量刚声明但还没有使用,如果声明后一直不用,在编译的时候就会出错,这个警告是编译器提供了针对可能导致运行时错误的代码的一组警告,在此不做具体限定。
45.其中,预设常量可以是在计算机程序运行时,不会被程序修改的量,例如:以没有引用关系的常量为例,是指不会被修改的量并持续使用,但是却无法引用到用一个地址,在此不作具体限定。
46.其中,预设结构体可以是构造数据类型,把不同类型的数据组合成一个整体,例如:至少有一个结构必须在另一个结构体中以指针的形式被引用,在此不做具体限定。
47.其中,第一预设关键字可以是用户事先设置的关键字,例如:关键字为discard,在此不做具体限定。
48.其中,预设条件分支代码可以是指在条件分支中,代码会根据条件决定是否执行,在此不做具体限定。
49.其中,第二预设关键字可以是用户事先设置的关键字,例如:continue,break等关键字,在此不做具体限定。
50.可以理解的是,本技术实施例对于识别到的不同语法利用不同的剔除策略剔除掉不满足条件的无用代码,减少赋值以及函数调用的性能消耗,达到优化目的,从而提高代码的运行效率。
51.在步骤s103中,匹配顶点字符串和像素字符串之间的引用关系,并利用引用关系剔除顶点字符串和像素字符串中预设错误,得到剔除后的顶点字符串和像素字符串,基于剔除后的顶点字符串和像素字符串分别生成新顶点文件和新像素文件,达到优化目的。
52.其中,预设错误可以是用户事先设置的错误,例如:不会被执行的代码、无意义代
码、错误代码等,在此不做具体限定。
53.可以理解的是,本技术实施例对得到顶点文件的定点字符串以及像素文件的像素字符串,利用引用关系进行匹配,剔除掉错误字符串得到剔除后的顶点字符串和像素字符串,并分别生成新顶点文件和新像素文件,对于无用代码以及错误代码进行剔除,达到优化目的,从而提高代码的运行效率。
54.在本技术实施例中,匹配顶点字符串和像素字符串之间的引用关系,包括:匹配顶点字符串和像素字符串的全局变量和目标代码的内建变量;如果匹配到全局变量和内建变量,则基于全局变量和内建变量生成引用关系,否则判定匹配失败,并发送异常信息至命令行。
55.可以理解的是,本技术实施例本技术实施例匹配顶点字符串和像素字符串的全局变量以及代码的内建变量,若是可以匹配到,则生成引用关系,若是匹配失败,则将异常信息发送至命令行,通过匹配顶点字符串和像素字符串之间的引用关系,方便判断这个字符串是否满足需求或是存在错误,进而做出相应的操作,从而达到优化目的,从而提高代码的运行效率。
56.根据本技术实施例提出的代码文件的优化方法,对获取到的代码的顶点文件以及像素文件进行加载得到对应的代码字符串,然后进行语法的处理,剔除不满足条件的代码,得到顶点文件的定点字符串以及像素文件的像素字符串并利用引用关系进行匹配,剔除掉错误字符串得到剔除后的顶点字符串和像素字符串,并分别生成新顶点文件和新像素文件,对于无用代码以及错误代码进行剔除,达到优化目的,从而提高代码的运行效率。由此,解决了无法对无用代码或是错误代码进行剔除,导致占用面积大,降低工作效率,降低代码的性能等问题。
57.下面将结合图2对代码文件的优化方法进行详细阐述,其中,本技术未做ui的交互,因此基于getopt函数进行封装,以支持在命令行接受必要的参数,如shader文件的输入路径和输出路径等,具体步骤如下:
58.第一步,就是在命令行上输入要进行剔除的shader文件路径,以及对剔除流程完毕后生成的文件指定路径;此外,一次需要输入两份shader文件的信息,需要在命令行上分别指定类型并标明哪一份是顶点shader,哪一份是像素shader。
59.第二步,命令行接受到所需的参数以后,将信息交给shaderloader模块,模块会根据文件路径找到对应的文件并将文件内容以字符串的形式读取出来。
60.第三步,shaderloader获取到代码字符串,再传给预处理模块进行处理,它首先会根据字符串复制出来,然后对识别出的一些宏定义进行处理,比如将#define定义的内容进行置换,然后将#define从代码中删除等,因此实际上剔除的操作在这一步就开始了。
61.第四步,预处理模块处理完成后,会将这段代码字符串传递给解析模块处理。该模块主要是对这段字符串进行语法解析,识别出哪些是关键字内容,哪些是操作符,哪些是函数,哪些是变量,以及构建出整段代码内部的调用关系并形成语法树,同时还会做一些简单的语法检查,如果解析失败,会在命令行上打印出失败的日志。
62.第五步,由于解析模块生成了语法树,那么就可以做剔除的实际操作了。目前本技术实施例做了如下内容的操作:
63.(1)在识别到有常量定义时,进行常量折叠,即将定义的常量剔除,然后后续代码
用到该常量时直接用该常量的值进行替换。
64.(2)在识别到有相等检查,即在条件判断时,关系运算符左右的变量有可能出现必然结果的情况,比如左边的变量始终为空,或者左右的变量始终相等,那么这就会导致条件执行的代码肯定会有一个分支是无效的,一旦检查到这类情况,会将这段无效代码剔除。
65.(3)对表达式树的所有叶子节点进行扫描,将可以剔除的临时变量剔除,将表达式直接替换到临时变量被使用的位置,该操作主要是为了减少赋值的性能消耗。
66.(4)在识别到函数时,根据引用关系找到调用的代码位置,判断是否可以内联,如果可以,将该函数剔除,把函数的内容替换到函数调用位置,该操作主要为了减少函数调用的性能消耗。
67.(5)在识别到存在没有引用关系的局部变量,常量或结构体时,将这些代码剔除,该部分依赖在生成语法树时进行的引用计数实现。
68.(6)在识别到glsl关键字discard时,判断它是否处于条件分支代码里,如果是,通过增加临时变量的方式将该关键字移动到条件分支外。
69.(7)在识别到对结构体内部变量进行单步赋值时,将单步赋值替换为swizzle操作。
70.(8)在识别到循环的表达式时,在其内部寻找continue,break等关键字,以定义标识符的方式替换掉这些关键字的处理逻辑;在识别到return时,也通过这种方式将其移动到函数的尾部。
71.第六步,将剔除完毕的顶点字符串和像素字符串进行匹配。在现代gpu渲染管线中,顶点着色器的操作在像素着色器之前,通常顶点着色器可以看做像素着色器的输入源,通过对比,形成两份字符串的引用关系,主要操作是匹配全局变量uniforms以及glsl内建的变量,如果匹配失败,则将异常信息打印到命令行。
72.第七步,主要是对匹配完毕后的统一检查。由于第五步的剔除操作是两份字符串分别进行的,并没有将两者结合起来进行剔除,比如剔除死代码的部分在第五步只能针对局部引用,而此步就可以对全局变量,函数或结构体进行安全的剔除操作。
73.第八步,最后在前面的操作完成以后,即可根据当前的字符串生成对应的shader文件,文件生成后,就可以把这两份文件加载到opengl的程序中去运行,功能上没有区别,但效率上会有一定提升。
74.综上,本技术实施例通过对shader代码文件进行剔除和改进输出一份新的shader代码文件,然后在opengl程序运行时达到优化效果,可以提高shader的执行效率,可以减小shader代码的体积,可以对不会被执行的代码,定义的无用变量以及注释等等对硬件无意义的glsl代码进行剔除,同时,也会对glsl的代码进行一定程度的优化,如将函数内联,去掉函数的调用,减少不必要的开销等。
75.其次参照附图描述根据本技术实施例提出的代码文件的优化装置。
76.图3是本技术实施例的代码文件的优化装置的方框示意图。
77.如图3所示,该代码文件的优化装置10包括:获取模块100、第一处理模块200和第二处理模块300。
78.其中,获取模块100用于获取目标代码的顶点文件和像素文件;第一处理模块200用于分别加载顶点文件和像素文件得到顶点文件和像素文件对应的代码字符串,解析代码
字符串的语法,得到语法树,并利用预设剔除策略剔除语法树中不满足预设条件的无用代码,得到顶点文件的顶点字符串和像素文件的像素字符串;第二处理模块300用于匹配顶点字符串和像素字符串之间的引用关系,并利用引用关系剔除顶点字符串和像素字符串中预设错误,得到剔除后的顶点字符串和像素字符串,基于剔除后的顶点字符串和像素字符串分别生成新顶点文件和新像素文件,达到优化目的。
79.在本技术实施例中,第一处理模块200用于:获取顶点文件和像素文件的文件路径;根据文件路径定位顶点文件和像素文件,并读取顶点文件和像素文件对应的代码字符串。
80.在本技术实施例中,第一处理模块200用于:在识别到语法树中存在常量定义时,进行常量折叠;和/或者,在识别到语法树中存在预设相等检查时,判断预设相等检查对应的代码无效,并剔除代码;和/或者,扫描语法树的所有叶子节点,剔除临时变量,将语法树的表达式替换临时变量被使用的位置;和/或者,在识别到函数时,根据引用关系匹配调用的代码位置,判断是否内联,如果是,则剔除函数,并将函数的内容替换到函数调用位置;和/或者,在识别到存在没有引用关系的预设局部变量、预设常量或预设结构体时,剔除预设局部变量、预设常量或预设结构体对应的代码;和/或者,在识别到目标代码的第一预设关键字时,判断预设关键字是否处于预设条件分支代码中,如果是,则增加临时变量预设关键字移动值预设条件分支外;和/或者,在识别到对结构体内部变量进行单步赋值时,将单步赋值替换为预设swizzle操作;和/或者,在识别到循环的表达式时,在其内部寻找第二预设关键字,并通过定义标识符替换第二预设关键字的处理逻辑,并在识别到返回代码时,通过定义标识符替换将返回操作,并将返回操作移动到函数的尾部。
81.在本技术实施例中,第二处理模块300用于:匹配顶点字符串和像素字符串的全局变量和目标代码的内建变量;如果匹配到全局变量和内建变量,则基于全局变量和内建变量生成引用关系,否则判定匹配失败,并发送异常信息至命令行。
82.需要说明的是,前述对代码文件的优化方法实施例的解释说明也适用于该实施例的代码文件的优化装置,此处不再赘述。
83.根据本技术实施例提出的代码文件的优化装置,对获取到的代码的顶点文件以及像素文件进行加载得到对应的代码字符串,然后进行语法的处理,剔除不满足条件的代码,得到顶点文件的定点字符串以及像素文件的像素字符串并利用引用关系进行匹配,剔除掉错误字符串得到剔除后的顶点字符串和像素字符串,并分别生成新顶点文件和新像素文件,对于无用代码以及错误代码进行剔除,达到优化目的,从而提高代码的运行效率。由此,解决了无法对无用代码或是错误代码进行剔除,导致占用面积大,降低工作效率,降低代码的性能等问题。
84.图4为本技术实施例提供的电子设备的结构示意图。该电子设备可以包括:
85.存储器401、处理器402及存储在存储器401上并可在处理器402上运行的计算机程序。
86.处理器402执行程序时实现上述实施例中提供的代码文件的优化方法。
87.进一步地,电子设备还包括:
88.通信接口403,用于存储器401和处理器402之间的通信。
89.存储器401,用于存放可在处理器402上运行的计算机程序。
90.存储器401可能包含高速ram(random access memory,随机存取存储器)存储器,也可能还包括非易失性存储器,例如至少一个磁盘存储器。
91.如果存储器401、处理器402和通信接口403独立实现,则通信接口403、存储器401和处理器402可以通过总线相互连接并完成相互间的通信。总线可以是isa(industry standard architecture,工业标准体系结构)总线、pci(peripheral component,外部设备互连)总线或eisa(extended industry standard architecture,扩展工业标准体系结构)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
92.可选的,在具体实现上,如果存储器401、处理器402及通信接口403,集成在一块芯片上实现,则存储器401、处理器402及通信接口403可以通过内部接口完成相互间的通信。
93.处理器402可能是一个cpu(central processing unit,中央处理器),或者是asic(application specific integrated circuit,特定集成电路),或者是被配置成实施本技术实施例的一个或多个集成电路。
94.本技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上的代码文件的优化方法。
95.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不是必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或n个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
96.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本技术的描述中,“n个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
97.流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更n个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本技术的实施例所属技术领域的技术人员所理解。
98.应当理解,本技术的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,n个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列,现场可编程门阵列等。
99.本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介
质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
100.尽管上面已经示出和描述了本技术的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本技术的限制,本领域的普通技术人员在本技术的范围内可以对上述实施例进行变化、修改、替换和变型。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献