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

文档序号:30445270发布日期:2022-06-18 00:19阅读:85来源:国知局
程序代码优化方法、装置、电子设备及存储介质与流程

1.本公开涉及计算机技术领域,尤其涉及一种程序代码优化方法、装置、电子设备及存储介质。


背景技术:

2.随着计算机技术的发展,在利用android编译系统进行代码开发和编译时,需要对程序代码(例如,java程序代码)文件进行优化,并把优化后的程序代码(例如,java字节码)转换为dex字节码,生成dex文件(dex文件是android上的应用程序apk中提取出来的可运行文件,也即优化后的程序代码文件)。
3.目前的程序代码优化方法,一般采用摇树优化(tree shaking)方法,首先找到程序入口点(或称为程序根节点),从程序入口点出发,对程序代码中包含的类、方法和字段进行遍历分析,标记其中必要的目标类、目标方法和目标字段。然后,计算机设备根据标记,识别程序代码中非必要的类,对其进行删除处理,以实现对程序代码的优化。
4.然而,目前的程序代码优化方法中,由于需要对程序文件中包含的所有类进行遍历分析,随着程序代码量的持续增大,程序代码优化方法耗时较长。


技术实现要素:

5.本公开提供一种程序代码优化方法、装置、电子设备及存储质,以至少解决相关技术中程序代码优化方法耗时较长的问题。本公开的技术方案如下:
6.根据本公开实施例的第一方面,提供一种程序代码优化方法,包括:
7.获取待优化的程序代码文件;
8.将所述程序代码文件中的程序代码进行划分,得到缓存类型代码和非缓存类型代码;
9.根据所述非缓存类型代码中的目标代码与所述缓存类型代码间的调用关系,确定文件调用标识,并获取所述文件调用标识对应的预先存储的第一程序优化文件,作为所述缓存类型代码对应的优化文件;
10.根据所述第一程序优化文件和根据所述非缓存类型代码中的所述目标代码得到的第二程序优化文件,得到优化后的程序代码文件。
11.在其中一个实施例中,所述程序代码文件中包含多个程序模块;所述将所述程序代码文件中的程序代码进行划分,得到缓存类型代码和非缓存类型代码,包括:
12.根据程序模块属性信息,将所述程序代码文件中包含的所述程序模块进行划分,得到目标类型程序模块和非目标类型程序模块;
13.将所述目标类型程序模块中包含的程序代码确定为缓存类型代码,将所述非目标类型程序模块中包含的程序代码确定为非缓存类型代码。
14.在其中一个实施例中,在所述根据所述非缓存类型代码中的目标代码与所述缓存类型代码间的调用关系,确定文件调用标识之前,所述方法还包括:
15.根据程序优化算法,识别所述非缓存类型代码中的目标代码以及所述目标代码对应的调用关系;所述调用关系包含所述目标代码与所述缓存类型代码间的被动调用关系;
16.根据所述被动调用关系,确定在所述缓存类型代码中被动调用的重分类代码;
17.为所述重分类代码配置程序入口规则,并根据所述程序入口规则,将所述重分类代码重新划分为所述非缓存类型代码中的目标代码。
18.在其中一个实施例中,所述获取所述文件调用标识对应的预先存储的第一程序优化文件,包括:
19.基于所述文件调用标识,在数据库中查询携带所述文件调用标识的文件;
20.若查询到携带所述文件调用标识的文件,则将所述文件作为第一程序优化文件。
21.在其中一个实施例中,所述方法还包括:
22.若未查询到携带所述文件调用标识的文件,则根据程序优化算法对所述缓存类型代码进行优化处理,生成第一程序优化文件;
23.为所述第一程序优化文件添加所述文件调用标识,并将添加所述文件调用标识后的所述第一程序优化文件上传至数据库。
24.在其中一个实施例中,所述根据程序优化算法对所述缓存类型代码进行优化处理,生成第一程序优化文件,包括:
25.根据程序优化算法,分析并标记所述缓存类型代码中包含的目标代码,删除所述缓存类型代码中未被标记的程序代码;
26.根据所述缓存类型代码中包含的所述目标代码,构建得到第一程序优化文件。
27.根据本公开实施例的第二方面,提供一种程序代码优化装置,包括:
28.获取单元,被配置为执行获取待优化的程序代码文件;
29.分类单元,被配置为执行将所述程序代码文件中的程序代码进行划分,得到缓存类型代码和非缓存类型代码;
30.处理单元,被配置为执行根据所述非缓存类型代码中的目标代码与所述缓存类型代码间的调用关系,确定文件调用标识,并从数据库中获取所述文件调用标识对应的第一程序优化文件,作为所述缓存类型代码对应的优化文件;
31.生成单元,被配置为执行根据所述第一程序优化文件和根据所述非缓存类型代码中的所述目标代码得到的第二程序优化文件,得到优化后的程序代码文件。
32.在其中一个实施例中,所述程序代码文件中包含多个程序模块;所述分类单元,包括:
33.分类子单元,被配置为执行根据程序模块属性信息,将所述程序代码文件中包含的所述程序模块进行划分,得到目标类型程序模块和非目标类型程序模块;
34.确定子单元,被配置为执行将所述目标类型程序模块中包含的程序代码确定为缓存类型代码,将所述非目标类型程序模块中包含的程序代码确定为非缓存类型代码。
35.在其中一个实施例中,所述程序代码优化装置还包括:
36.识别单元,被配置为执行根据程序优化算法,识别所述非缓存类型代码中的目标代码以及所述目标代码对应的调用关系;所述调用关系包含所述目标代码与所述缓存类型代码间的被动调用关系;
37.第一确定单元,被配置为执行根据所述被动调用关系,确定在所述缓存类型代码
中被动调用的重分类代码;
38.第二确定单元,被配置为执行为所述重分类代码配置程序入口规则,并根据所述程序入口规则,将所述重分类代码重新划分为所述非缓存类型代码中的目标代码。
39.在其中一个实施例中,所述处理单元,包括:
40.查询子单元,被配置为执行基于所述文件调用标识,在数据库中查询携带所述文件调用标识的文件;
41.判别子单元,被配置为执行若查询到携带所述文件调用标识的文件,则将所述文件作为第一程序优化文件。
42.在其中一个实施例中,所述程序代码优化装置还包括:
43.生成单元,被配置为执行若未查询到携带所述文件调用标识的文件,则根据程序优化算法对所述缓存类型代码进行优化处理,生成第一程序优化文件;
44.上传单元,被配置为执行为所述第一程序优化文件添加所述文件调用标识,并将添加所述文件调用标识后的所述第一程序优化文件上传至数据库。
45.在其中一个实施例中,所述处理单元,包括:
46.优化子单元,被配置为执行根据程序优化算法,分析并标记所述缓存类型代码中包含的目标代码,删除所述缓存类型代码中未被标记的程序代码;
47.构建子单元,被配置为执行根据所述缓存类型代码包含的所述目标代码,构建得到第一程序优化文件。
48.根据本公开实施例的第三方面,提功了一种电子设备,包括:
49.处理器;
50.用于存储所述处理器可执行指令的存储器;
51.其中,所述处理器被配置为执行所述指令,以实现上述第一方面所述的程序代码优化方法。
52.根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如上述第一方面所述的程序代码优化方法。
53.根据本公开实施例的第五方面,提供一种计算机程序产品,所述指令被电子设备的处理器执行时,使得所述电子设备能够执行如上述第一方面所述的程序代码优化方法。
54.本公开的实施例提供的技术方案至少带来以下有益效果:采用本方法,通过对程序代码的划分,得到缓存类型代码和非缓存类型代码,然后,根据非缓存类型代码中的目标代码与缓存类型代码间的调用关系,确定文件调用标识,基于确定出的文件调用标识可以直接获取缓存类型代码对应的优化后的第一程序优化文件,使得无需对程序代码文件中包含的全部程序代码进行遍历分析和标记,缩短程序代码文件的优化时间,进而,提高了程序代码文件的优化效率。
55.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
56.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施
例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
57.图1是根据一示例性实施例示出的一种程序代码优化方法的流程图。
58.图2是根据一示例性实施例示出的划分程序代码步骤的流程图。
59.图3是根据一示例性实施例示出的程序代码文件中各程序代码和调用关系示意图。
60.图4是根据一示例性实施例示出的确定非缓存类型代码中目标代码步骤的流程图。
61.图5是根据一示例性实施例示出的确定非缓存类型代码中全部目标代码示意图。
62.图6是根据一示例性实施例示出的获取第一程序优化文件步骤的流程图。
63.图7是根据一示例性实施例示出的非缓存类型与缓存类型代码调用关系示意图。
64.图8是根据一示例性实施例示出的生成并上传第一程序优化文件步骤的流程图。
65.图9是根据一示例性实施例示出的优化构建第一程序优化文件步骤的流程图。
66.图10是根据一示例性实施例示出的对缓存类型和非缓存类型代码优化后的示意图。
67.图11是根据一示例性实施例示出的一种程序代码优化方法的流程图。
68.图12是根据一示例性实施例示出的一种程序代码优化装置的框图。
69.图13是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
70.为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
71.需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
72.还需要说明的是,本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
73.本公开所提供的程序代码优化方法,可以应用于电子设备中。其中,电子设备包括处理器以及用于存储该处理器可执行指令的存储器。其中,处理器被配置为执行程序代码优化指令,以实现程序代码优化方法。
74.图1是根据一示例性实施例示出的一种程序代码优化方法的流程图,如图1所示,程序代码优化方法用于电子设备中,包括以下步骤。
75.在步骤s110中,获取待优化的程序代码文件。
76.在实施中,电子设备获取待优化的程序代码文件,其中,程序代码文件中包含android编译系统中开发编译的所有程序类、方法和字段。一般的,程序代码文件的文件格式为jar格式或者class格式。
77.在步骤s120中,将程序代码文件中的程序代码进行划分,得到缓存类型代码和非缓存类型代码。
78.在实施中,程序代码文件划分后得到的非缓存类型代码为与程序代码文件所要执行的业务相关性较高的程序代码,缓存类型代码为与程序代码文件所要执行的业务相关性较低的程序代码。例如,可以是非缓存类型代码为底层程序代码,缓存类型代码为上层程序代码。
79.具体地,电子设备识别待优化的程序代码文件中包含的各程序模块的属性信息,基于程序模块的属性信息,将程序代码文件中包含的全部程序模块进行划分,得到对应程序模块属性信息的划分结果,该划分结果中将所有程序代码划分为两类:目标类型程序模块包含的程序代码为缓存类型代码,非目标类型程序模块包含的程序代码为非缓存类型代码。
80.在步骤s130中,根据非缓存类型代码中的目标代码与缓存类型代码间的调用关系,确定文件调用标识,并获取文件调用标识对应的预先存储的第一程序优化文件,作为缓存类型代码对应的优化文件。
81.在实施中,电子设备可以在非缓存类型代码中识别并标记出目标代码,并根据该目标代码与缓存类型代码间的调用关系,确定文件调用标识。其中,生成的文件调用标识包含目标代码对缓存类型代码间的调用关系信息,用于唯一表示缓存类型代码对应的第一程序优化文件(dex1表示)。电子设备基于文件调用标识,可以从数据库中获取携带有该文件调用标识的第一程序文件,将其作为由缓存类型代码中目标代码构建的优化文件。
82.在一个示例中,电子设备可以通过方法调用指令、字段访问指令等,遍历分析所有的非缓存类型代码间的字节码指令(即调用关系指令),确定非缓存类型代码中目标代码对缓存类型代码间的调用关系,其中,调用关系包含主动调用关系和被动调用关系,主动调用关系为非缓存类型代码对缓存类型代码的调用关系;被动调用关系为缓存类型代码对非缓存类型代码的调用关系。每一调用关系均可以用一种字符串表示,则电子设备可以获取到非缓存类型代码中目标代码对缓存类型代码间的主动调用关系,确定每一主动调用关系对应的调用关系字符串,然后,电子设备可以根据md5等算摘要方法对全部调用关系字符串进行排序并计算,得到缓存类型代码对应的文件调用标识(id)。
83.可选的,除了md5等算摘要方法之外,还可以通过sha1方法,或者直接存储调用关系字符串,确定文件调用标识,本公开实施例不做限定。
84.在步骤s140中,根据第一程序优化文件和根据非缓存类型代码中的目标代码得到的第二程序优化文件,得到优化后的程序代码文件。
85.具体地,电子设备基于程序优化算法,在对非缓存类型代码中的目标代码进行识别标记之后,对非缓存类型代码中除标记的目标代码进行删除处理,得到仅由目标代码构成的第二程序优化文件(dex2)。然后,电子设备根据第二程序优化文件和获取到的第一程序优化文件,得到优化后的程序代码文件。
86.上述程序代码优化方法中,通过对程序代码的划分,得到缓存类型代码和非缓存类型代码,然后,根据非缓存类型代码中的目标代码与缓存类型代码间的调用关系,确定文件调用标识,基于确定出的文件调用标识可以直接获取缓存类型代码对应的优化后的第一程序优化文件,使得无需对程序代码文件中包含的全部程序代码进行遍历分析和标记,缩
短程序代码文件的优化时间,进而,提高了程序代码文件的优化效率。
87.在一示例性实施例中,如图2所示,程序代码文件中包含多个程序模块,针对程序代码文件中包含的多个程序模块,步骤s120具体可以通过以下步骤实现:
88.在步骤s121中,根据程序模块属性信息,将程序代码文件中包含的程序模块进行划分,得到目标类型程序模块和非目标类型程序模块。
89.其中,程序代码文件中包含不同属性类型的程序模块,每一程序模块中包含多个程序类、方法和字段的集合。
90.具体地,电子设备根据程序模块属性信息,将程序代码文件中包含的程序模块进行划分,得到目标类型程序模块和非目标类型程序模块。例如,电子设备可以将于业务无关的底层模块(比如:网络库、图片库,工具类库等等)确定为目标类型程序模块,将与业务相关的其他程序模块确定为非目标类型程序模块。
91.在步骤s122中,将目标类型程序模块中包含的程序代码确定为缓存类型代码,将非目标类型程序模块中包含的程序代码确定为非缓存类型代码。
92.具体地,电子设备基于程序模块的划分,可以进而得到程序模块中包含的程序代码的划分结果,即将目标类型程序模块中包含的程序代码确定为缓存类型代码,将非目标类型程序模块中包含的程序代码确定为非缓存类型代码。如图3所示,图3中分界线的上半部分区域内包含的圆圈表示为非目标类型程序模块中包含的非缓存类型代码,分界线下半部分区域内包含的圆圈表示为目标类型程序模块中包含的缓存类型代码。在图3中的圆圈代表一个程序类、方法或字段(也可以称为程序代码输入点),箭头表示各个程序代码输入点间的调用关系,例如,a点是一个方法,返回值类型是c点代表的程序类,那么a点和c点间的调用关系就表示为箭头由a点指向c点。
93.本实施例中,通过对程序代码文件中的程序代码进行分类,以使仅对非缓存类型代码进行优化处理,减少程序代码处理量,提高程序代码优化效率。
94.在一示例性实施例中,如图4所示,在步骤130之前,该方法还包括:
95.步骤s401,根据程序优化算法,识别非缓存类型代码中的目标代码以及目标代码对应的调用关系。
96.其中,调用关系包含目标代码与缓存类型代码间的被动调用关系
97.具体地,电子设备根据程序优化算法,识别非缓存类型代码中的目标代码,以及目标代码对应的调用关系。由于所有的程序入口点在划分时均划分在非缓存类型代码中,所以调用关系的主动和被动的判别标准是以非缓存类型代码为基准,若非缓存类型代码中的目标代码调用缓存类型代码,则该调用关系为主动调用关系;若非缓存类型代码中的代码被缓存类型代码中的目标代码调用,则该调用关系为被动调用关系。如图3所示,非缓存类型代码中的a点和b点为程序入口点,则由a点、b点(箭头)指向d点和f点表征的调用关系为主动调用关系。缓存类型代码中的e点(箭头)指向非缓存类型代码中的g点表征的调用关系为被动调用关系。
98.步骤s402,根据被动调用关系,确定在缓存类型代码中被动调用的重分类代码。
99.具体地,电子设备在进行程序优化时,基于对程序代码文件中程序代码的预先分类,将分类后的两种类型的程序代码进行独立分析处理,因此,在单独对第二类型程序代码进行优化处理时,如果仅考虑非缓存类型代码对缓存类型代码的主动调用关系,如图5所
示,则在非缓存类型代码中会存在g点这种被缓存类型代码中e点(类、方法或字段)调用的目标代码丢失(即未被标记而删除)。因此,电子设备在基于调用关系进行优化分析时,根据这种被动调用关系,将在缓存类型代码中被动调用关系下的代码确定为重分类代码(即图中的点e)。
100.步骤s403,为重分类代码配置程序入口规则,并根据程序入口规则,将重分类代码重新划分为非缓存类型代码中的目标代码。
101.具体地,电子设备为确定出的重分类代码配置程序入口规则,即在android编译环境中电子设备在混淆文件中为重分类代码配置keep规则。然后,电子设备基于该程序入口规则(keep规则),将重分类代码确定为程序入口点,这样,就使得重分类代码重新划分为非缓存类型代码中的目标代码(程序入口点均包含在非缓存类型代码中)。
102.本实施例中,将以程序模块为单位进行划分的程序代码中的重分类代码进行重新配置,转换为非缓存类型代码中的程序入口点(目标代码),进而实现了重分类代码的重新划分,避免了因代码分类偏差而可能存在的目标代码被删除的情况。
103.在一示例性实施例中,如图6所示,在步骤130中,从数据库中获取文件调用标识对应的第一程序优化文件可以通过以下步骤实现:
104.步骤s131,基于文件调用标识,在数据库中查询携带文件调用标识的文件。
105.其中,如图7所示,由于文件调用标识是基于非缓存类型代码中目标代码对缓存类型代码的调用关系确定出的,电子设备根据非缓存类型代码中每一目标代码对缓存类型代码的调用关系,就可以在缓存类型代码中确定其对应的代码(即确定缓存类型代码中的目标代码),因此,无论缓存类型代码中包含的全部程序代码输入点有多少,其最终代码优化后的结果均是基于非缓存类型代码中的目标代码确定的。由此,文件调用标识可以唯一标识缓存类型代码的程序优化结果。
106.具体地,电子设备可以基于文件调用标识,在数据库中查询携带有该文件调用标识的文件,以确定数据库中是否存在缓存类型代码优化后的程序优化文件。
107.步骤s132,若查询到携带文件调用标识的文件,则将文件作为第一程序优化文件。
108.具体地,若查询到携带有文件调用标识的文件,则电子设备将该文件作为缓存类型代码对应的第一程序优化文件。其中,第一程序优化文件是对缓存类型代码优化处理后上传至数据库存储的文件。
109.本实施例中,通过文件调用标识的唯一调用关系,直接在数据库中查询携带文件调用标识的文件,进而,基于该文件调用标识确定出的文件即为缓存类型代码对应的第一程序优化文件,无需对缓存类型代码进行优化分析处理,通过查询就可获得优化后的第一程序优化文件,减少程序代码文件中程序代码处理量,提高程序优化处理效率。
110.在一示例性实施例中,如图8所示,基于文件调用标识在数据库中查询文件的查询结果还包括另一种情况,具体处理过程包括:
111.步骤s801,若未查询到携带文件调用标识的文件,则根据程序优化算法对缓存类型代码进行优化处理,生成第一程序优化文件。
112.具体地,若在数据库中未查询到携带文件调用标识的文件,表明基于当前调用关系的缓存类型代码还未进行过优化处理,则电子设备根据预设的程序优化算法(例如,摇树优化算法)对缓存类型代码进行遍历分析并标记其中的目标代码。然后,电子设备对缓存类
型代码进行优化处理,转换为dex格式字节码,生成仅有标记的目标代码构建的第一程序优化文件(dex文件)。
113.步骤s802,为第一程序优化文件添加文件调用标识,并将添加文件调用标识后的第一程序优化文件上传至数据库。
114.具体地,电子设备将优化处理后的第一程序优化文件添加该文件调用标识,通过该文件调用标识对第一程序优化文件进行唯一表示。然后,电子设备将添加了文件调用标识的第一程序优化文件上传至数据库,以供其他用户在进行程序代码优化过程中,基于该文件调用标识进行第一程序优化文件的复用。
115.本实施例中,当未查询到携带文件调用标识的文件时,对缓存类型代码进行程序优化处理,将程序优化处理得到的第一程序优化文件添加该文件调用标识,并将第一程序优化文件上传至数据库,不仅完成该次程序优化过程,而且可以对该第一程序优化文件进行复用。
116.在一示例性实施例中,如图9所示,在步骤801中,根据程序优化算法对缓存类型代码进行优化处理,生成第一程序优化文件具体包括如下步骤:
117.步骤s8011,根据程序优化算法,分析并标记缓存类型代码中包含的目标代码,删除所述缓存类型代码中未被标记的程序代码。
118.具体地,由于未查询到已存在的第一程序优化文件,电子设备需要根据程序优化算法,以及非缓存类型代码中的目标代码与缓存类型代码间的调用关系,分析并标记缓存类型代码中包含的目标代码。如图10所示,图10中分界线以下的圆圈表示第一类型程序代码的全部输入点,电子设备基于非缓存类型代码中目标代码与缓存类型代码间的调用关系:d点与c点间的被动调用关系(也即c点对d点的主动调用关系)、f点与b点间的被动调用关系(也即b点对f点的主动调用关系),识别其中的目标代码,即d点、f点(不存在e点,此时e点已经重新划分为非缓存类型代码)。然后,电子设备通过r8工具删除缓存类型代码中除已经标记的目标代码之外的其他程序代码输入点。
119.步骤s8012,根据缓存类型代码包含的目标代码,构建得到第一程序优化文件。
120.具体地,电子设备通过r8工具将缓存类型代码中包含的目标代码点(例如,为java字节码格式)转换为dex字节码格式,构建得到第一程序优化文件(dex文件格式)。如图10所示,电子设备基于分析标记出的目标代码d点、f点,构建得到缓存类型代码程序优化后的第一程序优化文件。
121.本实施例中,通过分析标记等摇树优化处理手段,实现了对未查询到程序优化文件的缓存类型代码进行优化处理,生成了可复用的第一程序优化文件。
122.在一示例性实施例中,电子设备中预先安装有r8,r8为android编译系统的一个编译工具,可以用于删除、优化、混淆java字节码,并把java字节码转换为dex字节码。如图11所示,提供了一种程序代码优化方法的示例,该示例方法可以基于r8编译工具对程序代码进行优化处理,该示例方法包括:
123.步骤s1101,获取待优化的程序代码文件,将程序代码文件输入r8中,以使进行程序优化处理。
124.步骤s1102,根据程序模块属性信息,将程序代码文件中包含的程序模块进行划分,得到目标类型程序模块和非目标类型程序模块,将目标类型程序模块中包含的程序代
码确定为缓存类型代码,将非目标类型程序模块中包含的程序代码确定为非缓存类型代码。
125.步骤s1103,根据程序优化算法,识别非缓存类型代码中的目标代码以及目标代码对应的调用关系;调用关系包含非缓存类型代码中的目标代码与缓存类型代码间的被动调用关系,以及缓存类型代码与非缓存类型代码中的目标代码间的主动调用关系。
126.步骤s1104,根据被动调用关系,确定在缓存类型代码中被动调用的重分类代码。
127.步骤s1105,为重分类代码配置程序入口规则,并根据程序入口规则,将重分类代码重新划分为非缓存类型代码中的目标代码。
128.步骤s1106,根据非缓存类型代码中的目标代码与缓存类型代码间的主动调用关系,确定文件调用标识。
129.步骤s1107,在预先存储的程序优化文件中,查询是否存在携带该文件调用标识的文件,若存在携带该文件调用标识的文件,则执行步骤s1108,若不存在携带该文件调用标识的文件,则执行步骤s1109。
130.步骤s1108,将查询到的携带该文件调用标识的文件作为第一程序优化文件。
131.步骤s1109,根据程序优化算法对缓存类型代码进行优化处理,生成第一程序优化文件,并为第一程序优化文件添加文件调用标识,将添加文件调用标识的第一程序优化文件上传至数据库。
132.步骤s1110,根据第一程序优化文件和第二程序优化文件,得到的优化后的程序代码文件。
133.应该理解的是,虽然图1至图4、图6、图8至图9的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1至图4、图6、图8至图9中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
134.可以理解的是,本说明书中上述方法的各个实施例之间相同/相似的部分可互相参见,每个实施例重点说明的是与其他实施例的不同之处,相关之处参见其他方法实施例的说明即可。
135.图12是根据一示例性实施例示出的一种程序代码优化装置框图。参照图12,该装置1200包括获取单元1202,分类单元1204、处理单元1206和生成单元1208。
136.该获取单元1202被配置为执行获取待优化的程序代码文件。
137.该分类单元1204被配置为执行将程序代码文件中的程序代码进行划分,得到缓存类型代码和非缓存类型代码。
138.该处理单元1206被配置为执行根据非缓存类型代码中的目标代码与缓存类型代码间的调用关系,确定文件调用标识,并从数据库中获取文件调用标识对应的第一程序优化文件,作为缓存类型代码对应的优化文件。
139.该生成单元1208被配置为执行根据第一程序优化文件和根据非缓存类型代码中的目标代码得到的第二程序优化文件,得到优化后的程序代码文件。
140.在一示例性实施例中,程序代码文件中包含多个程序模块;分类单元1204包括:分类子单元,被配置为执行根据程序模块属性信息,将程序代码文件中包含的程序模块进行划分,得到目标类型程序模块和非目标类型程序模块。
141.确定子单元,被配置为执行将目标类型程序模块中包含的程序代码确定为缓存类型代码,将非目标类型程序模块中包含的程序代码确定为非缓存类型代码。
142.在一示例性实施例中,该装置1200还包括:
143.识别单元,被配置为执行根据程序优化算法,识别非缓存类型代码中的目标代码以及目标代码对应的调用关系;调用关系包含目标代码与缓存类型代码间的被动调用关系。
144.第一确定单元,被配置为执行根据被动调用关系,确定在缓存类型代码中被动调用的重分类代码。
145.第二确定单元,被配置为执行为重分类代码配置程序入口规则,并根据程序入口规则,将重分类代码重新划分为非缓存类型代码中的目标代码。
146.在一示例性实施例中,该处理单元1206,包括:
147.查询子单元,被配置为执行基于文件调用标识,在数据库中查询携带文件调用标识的文件;
148.判别子单元,被配置为执行若查询到携带文件调用标识的文件,则将文件作为第一程序优化文件。
149.在一示例性实施例中,该装置1200还包括:
150.生成单元,被配置为执行若未查询到携带文件调用标识的文件,则根据程序优化算法对缓存类型代码进行优化处理,生成第一程序优化文件。
151.上传单元,被配置为执行为第一程序优化文件添加文件调用标识,并将添加文件调用标识后的第一程序优化文件上传至数据库。
152.在一示例性实施例中,该处理单元1206,包括:
153.优化子单元,被配置为执行根据程序优化算法,分析并标记缓存类型代码中包含的目标代码,删除缓存类型代码中未被标记的程序代码;
154.构建子单元,被配置为执行根据缓存类型代码包含的目标代码,构建得到第一程序优化文件。
155.关于上述实施例中的装置1200,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
156.图13是根据一示例性实施例示出的一种用于程序代码优化的电子设备1300的框图。例如,电子设备1300可以是计算机、数字广播终端、消息收发设备、游戏控制台、平板设备、医疗设备、健身设备、个人数字助理等。
157.参照图13,电子设备1300可以包括以下一个或多个组件:处理组件1302、存储器1304、电源组件1306、多媒体组件1308、音频组件1310、输入/输出(i/o)的接口1313、传感器组件1311以及通信组件1316。
158.处理组件1302通常控制电子设备1300的整体操作,诸如与显示、电话呼叫、数据通信、相机操作和记录操作相关联的操作。处理组件1302可以包括一个或多个处理器1320来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件1302可以包括一个或多个
模块,便于处理组件1302和其他组件之间的交互。例如,处理组件1302可以包括多媒体模块,以方便多媒体组件1308和处理组件1302之间的交互。
159.存储器1304被配置为存储各种类型的数据以支持在电子设备1300的操作。这些数据的示例包括用于在电子设备1300上操作的任何应用程序或方法的指令、联系人数据、电话簿数据、消息、图片、视频等。存储器1304可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram)、电可擦除可编程只读存储器(eeprom)、可擦除可编程只读存储器(eprom)、可编程只读存储器(prom)、只读存储器(rom)、磁存储器、快闪存储器、磁盘、光盘或石墨烯存储器。
160.电源组件1306为电子设备1300的各种组件提供电力。电源组件1306可以包括电源管理系统,一个或多个电源,及其他与为电子设备1300生成、管理和分配电力相关联的组件。
161.多媒体组件1308包括在所述电子设备1300和用户之间的提供输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件1308包括前置摄像头和/或后置摄像头。当电子设备1300处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是固定的光学透镜系统或具有焦距和光学变焦能力。
162.音频组件1310被配置为输出和/或输入音频信号。例如,音频组件1310包括麦克风(mic),当电子设备1300处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1304或经由通信组件1316发送。在一些实施例中,音频组件1310还包括扬声器,用于输出音频信号。
163.i/o接口1313为处理组件1302和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
164.传感器组件1311包括一个或多个传感器,用于为电子设备1300提供各个方面的状态评估。例如,传感器组件1311可以检测到电子设备1300的打开/关闭状态,组件的相对定位,例如所述组件为电子设备1300的显示器和小键盘,传感器组件1311还可以检测电子设备1300或电子设备1300组件的位置改变,用户与电子设备1300接触的存在或不存在,设备1300方位或加速/减速和电子设备1300的温度变化。传感器组件1311可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件1311还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件1311还可以包括加速度传感器、陀螺仪传感器、磁传感器、压力传感器或温度传感器。
165.通信组件1316被配置为便于电子设备1300和其他设备之间有线或无线方式的通信。电子设备1300可以接入基于通信标准的无线网络,如wifi,运营商网络(如2g、3g、4g或5g),或它们的组合。在一个示例性实施例中,通信组件1316经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件1316还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红
外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
166.在示例性实施例中,电子设备1300可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
167.在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器1304,上述指令可由电子设备1300的处理器1320执行以完成上述方法。例如,计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
168.在示例性实施例中,还提供一种计算机程序产品,所述计算机程序产品中包括指令,上述指令可由电子设备1300的处理器1320执行以完成上述方法。
169.需要说明的,上述的装置、电子设备、计算机可读存储介质、计算机程序产品等根据方法实施例的描述还可以包括其他的实施方式,具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。
170.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
171.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1