【技术实现步骤摘要】
一种高效的不可变对象执行环境的构建方法及装置
[0001]本专利技术涉及计算机领域,特别是涉及一种高效的不可变对象执行环境的构建方法及装置。
技术介绍
[0002]据统计,史上重大bug导致的经济损失已超过10000亿美元,其中最难发现的bug是竞争冒险(race hazard)bug,又名竞态条件、竞争条件。现在软件越来越多的使用多线程技术来实现并发并行,导致竞争冒险类bug也发生得越来越多。
[0003]所以新编程语言往往采用不可变的语义(Environment for Immutability),不可变的语义又被称为不可变的环境、不可变对象的编程环境,下文简称之为 EIMM。在EIMM的约束下,从源头上就根绝了竞争冒险类bug的产生。具体来说,不可变语义有如下特征:
[0004]程序员不再需要关心区分值语义和引用语义,全都按照值语义理解,简化了编程的心智负担,编译器可以选用性能最好的解释;EIMM中,不会形成环引用,可以简化引用计数或者GC等内存管理的实现;程序员不用考虑对象被其他线程改变的情况,所以不可变语义天然对并发并行程序友好,容易编写和理解。
[0005]但是现有EIMM还存在一类性能问题,其中由于值语义需要进行成员复制,如果不作优化,会需要大量的内存重分配,占用不少的处理器和内存资源。
[0006]本专利技术旨在解决以上问题,优化不可变对象环境的性能。
技术实现思路
[0007]本专利技术的目的是解决现有技术的不足,提供一种高效的不可变对象执行环境的构建 ...
【技术保护点】
【技术特征摘要】
1.一种高效的不可变对象执行环境的构建方法,其特征在于,包括如下步骤:步骤1:对程序代码进行静态分析,获得变量之间的亲和度;步骤2:通过亲和度分析的图着色算法,获得着色方案,并根据着色方案确定寄存器分配方案;步骤3:确定着色方案后,把同颜色组的所有节点按时序排列,并对所有节点进行逃逸分析;其中节点表示变量;步骤4:应用逃逸分析结果结合变量之间的亲和度以及着色方案,分配内存块。2.根据权利要求1所述的一种高效的不可变对象执行环境的构建方法,其特征在于,所述步骤1中,对程序代码进行静态分析过程中,首先需要计算出所有变量的生命期;其次建立变量间的生命周期关系图G(V,E),其中V表示顶点的集合,E表示边的集合,顶点表示变量的生命期,边表示两个变量的生命期存在重叠;最后判断任意两个存在边的变量之间的亲和度关系。3.根据权利要求2所述的一种高效的不可变对象执行环境的构建方法,其特征在于,所述变量之间的亲和度关系,包括如下几种不相交的情况:情况一:两个变量类型相同且它们指向的都是带有若干属性的对象,并且则两个被变量指向的对象之间,除了1个属性外其他属性都相同,则认为这两个变量之间亲和度高;情况二:对于不满足情况一的两个变量,如果两个变量的类型相同,则认为这两个变量之间亲和度中等;情况三:对于不满足情况一和情况二的情形,如果两个变量的指向的内存大小属于同样的分配类,则认为它们之间亲和度低;情况四:其他情况,认为两个变量之间无亲和度。4.根据权利要求3所述的一种高效的不可变对象执行环境的构建方法,其特征在于,所述步骤2中,分配寄存器包括如下步骤:步骤21:将所有变量作为节点,并将所有变量按时序排列;步骤22:根据图着色算法,构建多目标优化问题;其中多目标优化问题中包括目标和约束;步骤23:通过优化算法,对多目标优化问题求解,得到满足约束的帕累托最优曲线;步骤24:通过帕累托最优曲线,获得寄存器的分配方案。5.根据权利要求4所述的一种高效的不可变对象执行环境的构建方法,其特征在于,所述步骤22中,构建的多目标优化问题包括两个目标和两个约束,如下所示:目标一:最小化Y
j
的和;目标二:最大化着色方案的亲和度分值;约束1:对任意边对应的两个节点{v
i
,v
l
},都有X
ij
+X
lj
小于等于Y
j
;约束2:对任意节点v
i
,有∑
j
X
ij
=1;其中,v
i
,v
l
表示节点,i和l表示时序编号,其中i表示时序为i的节点,l表示时序为l的节点;j表示j号颜色,j∈{1,2...};Y
j
表示j号颜色的...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。