Java 循环版本化优化与不规则代码的预取技术
1. Java 循环版本化优化
在 Java 编程中,处理数组的程序常常需要进行空值和索引检查,这会带来一定的性能开销。而循环版本化技术则可以有效去除这些检查,提高程序性能。
-
相关工作回顾
- Byler 等人 :似乎是循环版本化优化的先驱,他们的工作旨在解决并行架构下计算程序优化时编译时信息不足的问题,提出通过版本化检测别名安全的数组区域,从而实现并发计算。
- Pugh :详细描述了 Java 内存模型,并提出了进一步改进,以使更多优化适用于 Java。
- Bodik 等人 :提出了用于去除数组检查的各种静态分析技术,不过这些技术主要依赖局部(过程内)优化,对于实际的 Java 程序,全局流敏感分析计算难度大,且由于 Java 存在类的动态加载和元编程功能,全局分析一般难以应用。
- Artigas 等人 :考虑了在 IBM 高性能编译器中实现 Java 的循环版本化,但其工作主要关注并行处理别名安全数组区域,未讨论其适用条件。
- Fitzgerald 等人 :所开发的 Marmot 提前编译器未考虑循环版本化优化。
- Suganuma 等人 :描述的 IBM 即时编译器架构与本文工作最相关,他们提出的算