一种编译优化方法和装置制造方法及图纸

技术编号:36154863 阅读:33 留言:0更新日期:2022-12-31 20:00
本申请实施例公开了一种编译优化方法和装置,涉及电子设备领域,使得电子设备可以一次性读取多个高频访问的数据(如成员变量)的同时,降低由于填充操作导致的低效率。具体方案为:根据该访问频率,排序该应用程序的第一结构体的成员变量的存储顺序,该成员变量包括第一成员变量和第二成员变量,该第一成员变量的访问频率高于该第二成员变量,该第一成员变量的存储顺序在该第二成员变量之前。根据第一字节宽度,通过填充字段对该成员变量进行字节对齐。其中,第一填充字段用于对该第一成员变量进行字节对齐。将该第二成员变量存入该第一填充字段。该第一填充字段的大小大于或等于该第二成员变量的大小。第二成员变量的大小。第二成员变量的大小。

【技术实现步骤摘要】
一种编译优化方法和装置


[0001]本申请实施例涉及电子设备领域,尤其涉及一种编译优化方法和装置。

技术介绍

[0002]电子设备可以在运行的过程中,从内存将数据读入缓存,以便利用缓存的快速读写能力提升电子设备的运行效率。
[0003]可以理解的是,电子设备在运行过程中,需要调用不同的成员变量。比如,电子设备可以在需要使用成员变量时,从缓存中查找该成员变量。如果在缓存中没有查找到该成员变量,那么电子设备可以从内存中查找该成员变量,并将该成员变量读入缓存中,以便从缓存中调用该成员变量。
[0004]由于缓存的容量有限,一般无法存储大量的成员变量。因此,电子设备就会频繁地由于无法从缓存中查找到需要的成员变量,而需要从内存中进行读取操作。由此会带来显著的访问延迟以及大量读取操作引入的功耗开销。

技术实现思路

[0005]本申请实施例提供一种编译优化方法和装置,能够使得电子设备可以一次性读取多个高频访问的数据(如成员变量)的同时,降低由于填充操作导致的低效率。
[0006]为了达到上述目的,本申请实施例采用如下技术方案:
[0007]第一方面,提供一种编译优化方法,应用于电子设备,该方法包括:在安装应用程序时,或者安装该应用程序之后,在对该应用程序进行编译时,根据该访问频率,排序该应用程序的第一结构体的成员变量的存储顺序,该成员变量包括第一成员变量和第二成员变量,该第一成员变量的访问频率高于该第二成员变量,该第一成员变量的存储顺序在该第二成员变量之前。根据第一字节宽度,通过填充字段对该成员变量进行字节对齐。其中,第一填充字段用于对该第一成员变量进行字节对齐。将该第二成员变量存入该第一填充字段。该第一填充字段的大小大于或等于该第二成员变量的大小。
[0008]基于该方案,提供了一种优化成员变量的存储的方案。可以理解的是,通过将高频访问的成员变量存储在靠前的位置,能够使得电子设备可以更加快速地读取高频成员变量进行使用,由此可以减少读取高频成员变量需要的读取操作的数量,从而减少时延和功耗。在本示例中,电子设备还可以将较小的成员变量填充到靠前位置中填充的地址段中,从而使得电子设备在读取高频成员变量的同时,能够减少填充的地址段的占比,提升读取数据中的有效数据的占比。由此就可以达到降低由于填充操作导致的数据读取效率降低情况发生。
[0009]在一种可能的设计中,在该将第二成员变量存入第一填充字段之后,该方法还包括:根据该第一成员变量和/或该第二成员变量的存储地址,调整访问该成员变量的偏移量。基于该方案,在调整不同成员变量在内存中的存储顺序之后,处理器还可以调整调用这些成员变量的指令中的偏移量。从而能够根据优化后的存储顺序正确调用对应的成员变
量。
[0010]在一种可能的设计中,在该根据该访问频率,排序该应用程序的第一结构体的成员变量的存储顺序之前,该方法还包括:获取该电子设备运行过程中,该第一结构体中的每个该成员变量的访问频率。基于该方案,提供了一种对成员变量进行排序之前的方案示例。比如,可以获取各个成员变量在运行过程中的访问频率。从而根据访问频率对成员变量的存储顺序进行优化调整。比如可以将访问频率较高的成员变量存储在访问频率较低的成员变量之前。
[0011]在一种可能的设计中,该第一字节宽度是根据该电子设备的处理器的读取带宽确定的,该处理器的读取带宽是该处理器执行一次读取操作时,能够读取的最大数据量。基于该方案,提供了一种第一字节宽度的示例。比如,第一字节宽度可以是根据处理器的读取带宽确定的。作为一种示例,根据不同的处理器的架构,其读取带宽可以不同。以64位系统为例,其读取带宽可以为2比特,4比特,8比特等。
[0012]在一种可能的设计中,该获取该电子设备运行过程中,该第一结构体中的每个该成员变量的访问频率,包括:对该第一结构体中每个该成员变量执行插桩操作,根据该应用程序进行编译过程中,插入各个成员变量的检测标识的调用次数,确定每个该成员变量的访问频率。基于该方案,提供了一种确定成员变量的读取频率的方案示例。在本示例中,每个成员变变量可以通过插桩插入各自对应的检测标识。根据检测标识的调用次数,就能够确定对应成员变量的访问频率。
[0013]在一种可能的设计中,在将该第二成员变量存入该第一填充字段之前,该方法还包括:查找该排序该应用程序的第一结构体的成员变量的存储顺序后,未存储成员变量的第一地址,该第一地址是该第一填充字段的首地址。在该第一地址之后,查找该第二成员变量,该第二成员变量的存储地址在该第一地址之后,该第二成员变量的大小小于该第一填充字段的大小。该将该第一优化结果中,第一成员变量存入第一填充字段,包括:将该第四成员变量的数据,存储的到该第一填充字段中。基于该方案,提供了一种具体的使用存储靠后的成员变量补充填充区域的方案示例。比如,可以根据首地址未存储有效的成员变量数据确定该首地址为第一填充字段的首地址。对应的,还可以在该第一填充字段之后,查找首地址存储有有效的成员变量的存储段,则该存储段的内容就可以是一个成员变量。当该成员变量的存储地址的下一个地址存储有无效数据时,则该存储地址就可以是当前成员变量的长度。类似的,电子设备可以确定第一填充字段的长度,并在后续存储地址中查找长度不超过第一填充字段的长度的成员变量。这样,将该符合要求的成员变量填充到填充字段,就能够实现减小填充字段的效果。同时,电子设备原先读取该第一填充字段的读取操作可以同时读入第二成员变量,这样也能够提升读取操作的效率。
[0014]在一种可能的设计中,该方法还包括:对该第二成员变量在该排序该应用程序的第一结构体的成员变量的存储顺序后的存储地址填充无效数据。或者,删除该第二成员变量在该排序该应用程序的第一结构体的成员变量的存储顺序后的存储地址中的数据。基于该方案,提供了一种成员变量被填充到填充字段之后,原先存储该成员变量的地址段的处理机制。示例性的,可以将该原先存储该成员变量的地址段中的数据删除,由此释放对应的存储空间,或者可以在原先存储该成员变量的地址段中填充无效数据,从而避免该第四成员变量的重复存储和读取。
[0015]在一种可能的设计中,在将该第二成员变量存入该第一填充字段之后,该方法还包括:查找未存储成员变量的第二地址,该第二地址是当前存储顺序中的第二填充字段的首地址。在该第二地址之后,查找第三成员变量,该第三成员变量的存储地址在该第二地址之后,该第五成员变量的大小小于该第二填充字段的大小。将该第三成员变量的数据,存储的到该第二填充字段中。基于该方案,在完成了对第一填充字段的成员变量的填充之后,还可以对后续的填充字段(如第二填充字段)进行填充。由此就能够进一步缩小填充字段在存储空间中的占比,从而提升读取效率。
[0016]第二方面,提供一种编译优化装置,应用于电子设备,该装置包括:排序单元,用于,在安装应用程序时,或者安装该应用程序之后,在对该应用程序进行编译时,根据该访问频率,排序该应用程序的第一结构体的成员变量的存储顺序,该成员变量包括第一成员变量和第二成本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种编译优化方法,其特征在于,应用于电子设备,所述方法包括:在安装应用程序时,或者安装所述应用程序之后,在对所述应用程序进行编译时,根据所述访问频率,排序所述应用程序的第一结构体的成员变量的存储顺序,所述成员变量包括第一成员变量和第二成员变量,所述第一成员变量的访问频率高于所述第二成员变量,所述第一成员变量的存储顺序在所述第二成员变量之前;根据第一字节宽度,通过填充字段对所述成员变量进行字节对齐;其中,第一填充字段用于对所述第一成员变量进行字节对齐;将所述第二成员变量存入所述第一填充字段;所述第一填充字段的大小大于或等于所述第二成员变量的大小。2.根据权利要求1所述的方法,其特征在于,在所述将第二成员变量存入第一填充字段之后,所述方法还包括:根据所述第一成员变量和/或所述第二成员变量的存储地址,调整访问所述成员变量的偏移量。3.根据权利要求1或2所述的方法,其特征在于,在所述根据所述访问频率,排序所述应用程序的第一结构体的成员变量的存储顺序之前,所述方法还包括:获取所述电子设备运行过程中,所述第一结构体中的每个所述成员变量的访问频率。4.根据权利要求1

3中任一项所述的方法,其特征在于,所述第一字节宽度是根据所述电子设备的处理器的读取带宽确定的,所述处理器的读取带宽是所述处理器执行一次读取操作时,能够读取的最大数据量。5.根据权利要求1

4中任一项所述的方法,其特征在于,所述获取所述电子设备运行过程中,所述第一结构体中的每个所述成员变量的访问频率,包括:对所述第一结构体中每个所述成员变量执行插桩操作,根据所述应用程序进行编译过程中,插入各个成员变量的检测标识的调用次数,确定每个所述成员变量的访问频率。6.根据权利要求1

5中任一项所述的方法,其特征在于,在将所述第二成员变量存入所述第一填充字段之前,所述方法还包括:查找所述排序所述应用程序的第一结构体的成员变量的存储顺序后,未存储成员变量的第一地址,所述第一地址是所述第一填充字段的首地址;在所述第一地址之后,查找所述第二成员变量,所述第二成员变量的存储地址在所述第一地址之后,所述第二成员变量的大小小于所述第一填充字段的大小;所述将所述第一优化结果中,第一成员变量存入第一填充字段,包括:将所述第四成员变量的数据,存储的到所述第一填充字段中。7.根据权利要求6所述的方法,其特征在于,所述方法还包括:对所述第二成员变量在所述排序所述应用程序的第一结构体的成员变量的存储顺序后的存储地址填充无效数据;或者,删除所述第二成员变量在所述排序所述应用程序的第一结构体的成员变量的存储顺序后的存储地址中的数据。8.根据权利要求6或7所述的方法,其特征在于,在将所述第二成员变量存入所述第一填充字段之后,所述方法还包括:查找未存储成员变量的第二地址,所述第二地址是当前存储顺序中的第二填充字段的首地址;在所述第二地址之后,查找第三成员变量,所述第三成员变量的存储地址在所述第二
地址之后,所述第五成员变量的大小小于所述第二填充字段的大小;将所述第三成员变量的数据,存储的到所述第二填充字段中。9.一种编译优化装置,其特征在于,应用于电子设备,所述装置包括:排序单元,用于在安装应用程序时,或者安装所述应用程序之后,在对所述应用程序进行编译时,根据所述访问频率,排序所述应用程序的第一结构体的成员变量的存储顺序,所述成员变量包括第一成员变量和第二成员变量,所述第一成...

【专利技术属性】
技术研发人员:季柯丞李文韬彭卓立邱榆
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1