冗余数组边界检查与对象内联优化

冗余数组边界检查与对象内联优化

论文摘要

Java是一门应用很广的流行语言。它有良好跨平台性和优秀的安全性等优点。但是同时运行速度低下一直成为它不足。本文试图从两个方面入手针对Java运行时性能进行调优。一方面是Java语言的异常安全机制。作为一个类型安全程序语言,Java要求对每次数组访问提供边界检查。这些检查指令减慢了Java程序的运行速度。算法ABCE在编译时维护并不断更新数组访问相关变量的取值信息,然后根据这些信息识别出那些冗余的数组边界检查,最后删除它们,从而达到提高程序性能的目的。另一方面是Java语言的面向对象特性。Java是一门面向对象语言。但是面向对象语言将引起数据在内存中分散分布,导致内存的局部性变差和程序解引用操作的增多,后果就是程序运行时性能退化。本文提供的对象内联优化将分析程序中的数据关系,并把符合条件的数据分配到内存的连续空间中,有效地缓解了性能退化。冗余数组边界检查消除和对象内联优化实现在基于开源open64平台的Java编译器opencj上。科学计算类测试集SciMark2.0的测试表明ABCE算法平均删除了76%的边界检查指令,其中LU子程序,该算法的加速近似达到理论最大值。对象内联优化的测试实验也表明,它能有效提高面向对象语言的运行时性能。

论文目录

  • 目录
  • 摘要
  • Abstract
  • 第一章 绪论
  • 1.1 研究背景
  • 1.2 性能瓶颈
  • 1.3 优化方向
  • 1.4 问题与方法
  • 1.5 论文结构
  • 第二章 背景知识
  • 2.1 冗余数组边界检查消除背景
  • 2.1.1 相关知识
  • 2.1.2 ABCD算法
  • 2.1.3 Wrthinger算法
  • 2.1.4 约束图算法
  • 2.2 对象内联背景
  • 2.2.1 内联情况归类
  • 2.2.2 wimmer的实现
  • 2.2.3 域分析技术
  • 2.3 Java静态编译器opencj
  • 2.3.1 Java静态编译器
  • 2.3.2 opencj
  • 2.4 本章小结
  • 第三章 冗余数组边界检查消除
  • 3.1 简介
  • 3.2 构建不等式图
  • 3.2.1 遍历索引相关变量集
  • 3.2.2 构建不等式图
  • 3.2.3 产生索引取值信息
  • 3.3 识别冗余类型
  • 3.3.1 识别完全冗余边界检查
  • 3.3.2 识别部分冗余边界检查
  • 3.4 消除冗余数组边界检查
  • 3.4.1 消除完全冗余边界检查
  • 3.4.2 消除部分冗余边界检查
  • 3.5 冗余数据边界检查消除算法的比较
  • 3.6 本章小结
  • 第四章 对象内联
  • 4.1 简介
  • 4.2 算法设计
  • 4.3 算法实现
  • 4.3.1 系统框架
  • 4.3.2 域处理
  • 4.3.2.1 方法跟踪
  • 4.3.2.2 能否对象内联
  • 4.3.2.3 域载入优化
  • 4.4 本章小结
  • 第五章 性能测试
  • 5.1 冗余数组边界检查消除
  • 5.1.1 边界检查的消除
  • 5.1.2 性能评估
  • 5.2 对象内联优化
  • 5.2.1 性能评估
  • 第六章 总结与展望
  • 参考文献
  • 致谢
  • 相关论文文献

    • [1].基于污点分析的数组越界缺陷的静态检测方法[J]. 软件学报 2020(10)
    • [2].二维数组在俄罗斯方块游戏编程中的应用分析[J]. 数码世界 2020(02)
    • [3].怎样用给出的数组比例[J]. 数学小灵通(5-6年级版) 2010(03)
    • [4].“数组”教学设计[J]. 中小学电教(下) 2011(11)
    • [5].C程序数组越界的运行时验证技术研究与实现[J]. 计算机工程与应用 2015(11)
    • [6].C语言中二维数组的输出样式辨析[J]. 软件 2013(07)
    • [7].不含L连续数组的排列计数问题的研究[J]. 广东技术师范学院学报 2013(07)
    • [8].基于容器对象的动态控件数组研究[J]. 现代电子技术 2012(01)
    • [9].基于C++二维数组的几个问题研究[J]. 硅谷 2012(22)
    • [10].用多位数动态数组实现进制转换的研究[J]. 湖南文理学院学报(自然科学版) 2011(01)
    • [11].C++动态数组的实现与重用[J]. 计算机技术与发展 2010(02)
    • [12].二维数组复杂性测度的统计复杂度改进[J]. 哈尔滨工业大学学报 2009(10)
    • [13].计算机数组分析研究[J]. 硅谷 2008(02)
    • [14].运用控件数组提高编程效率[J]. 职业 2008(36)
    • [15].关于印度奇妙数组三个性质的证明[J]. 中学数学 2008(21)
    • [16].数组越界的静态分析[J]. 电脑编程技巧与维护 2012(04)
    • [17].基于链表结构的多维动态数组设计方法[J]. 西北师范大学学报(自然科学版) 2011(01)
    • [18].程序符号执行中的数组分析[J]. 长江大学学报(自然科学版)理工卷 2010(01)
    • [19].C语言中动态数组的构建[J]. 科技信息 2010(24)
    • [20].关于在C++中数组申请归还实现的研究与应用[J]. 福建电脑 2009(04)
    • [21].浅析C++中获取数组长度的若干方法[J]. 电脑知识与技术 2018(19)
    • [22].两类有趣数组[J]. 吉首大学学报(社会科学版) 2013(S1)
    • [23].在C语言中利用动态结构数组处理学生成绩表[J]. 软件导刊 2012(08)
    • [24].ABCE:Java冗余数组越界检查消除[J]. 小型微型计算机系统 2010(11)
    • [25].影院售票系统开发中动态数组的灵活应用[J]. 计算机应用与软件 2009(07)
    • [26].混合计算工程中复合数据的传递(Ⅲ)——派生类型内嵌数组[J]. 武汉大学学报(工学版) 2009(04)
    • [27].0LAP中多维数组的一种改进压缩算法[J]. 计算机与现代化 2008(10)
    • [28].倍增法之后缀数组解决重复子串的问题[J]. 中国新通信 2016(17)
    • [29].抓住特征 分步思考[J]. 数学大世界(小学5-6年级版) 2015(06)
    • [30].一种过程内及过程间数组越界故障的静态检测方法[J]. 计算机研究与发展 2010(S1)

    标签:;  ;  ;  ;  ;  

    冗余数组边界检查与对象内联优化
    下载Doc文档

    猜你喜欢