首页> 外文会议>European conference on object-oriented programming >Static Detection of Loop-Invariant Data Structures
【24h】

Static Detection of Loop-Invariant Data Structures

机译:循环不变数据结构的静态检测

获取原文
获取外文期刊封面目录资料

摘要

As a culture, object-orientation encourages programmers to create objects, both short- and long-lived, without concern for cost. Excessive object creation and initialization can cause severe runtime bloat, which degrades significantly application performance and scalability. A frequently-occurring coding pattern that may lead to large volumes of (temporary) objects is the creation of objects that, while allocated per loop iteration, contain values independent of specific iterations. Finding these objects and moving them out of loops requires sophisticated interprocedural analysis, a task that is difficult for traditional dataflow analyses such as loop-invariant code motion to accomplish. Our work targets data structures that are loop-invariant, and presents a static type and effect system to detect loop-invariant data structures. For each loop, our analysis inspects each logical data structure in order to find those that have disjoint instances per loop iteration and contain loop-invariant data. Instead of automatically hoisting them to improve performance (which is over-conservative), we report hoistability measurements for each disjoint loop data structure detected by our analysis. Eventually these data structures are ranked based on these measurements and are presented to the user to help manual tuning. We have performed a variety of studies on a set of 19 moderate/large-sized Java benchmarks. With the help of hoistability measurements, we found optimization opportunities in most of the programs that we inspected and achieved significant performance improvements in some of them (e.g., 82.1% running time reduction).
机译:作为一种文化,面向对象鼓励程序员创建短期和长期的对象,而不用担心成本。过多的对象创建和初始化可能会导致严重的运行时膨胀,从而严重降低应用程序的性能和可伸缩性。可能导致大量(临时)对象的频繁出现的编码模式是创建对象,这些对象在每次循环迭代中分配时,包含独立于特定迭代的值。找到这些对象并将其移出循环需要复杂的过程间分析,这是传统数据流分析(例如循环不变代码运动)难以完成的任务。我们的工作针对循环不变的数据结构,并提出了一个静态类型和效果系统来检测循环不变的数据结构。对于每个循环,我们的分析都会检查每个逻辑数据结构,以查找那些在每次循环迭代中具有不相交实例且包含循环不变数据的逻辑数据结构。我们不会自动提升它们以提高性能(过于保守),而不会报告分析所检测到的每个不相交回路数据结构的可提升性测量结果。最终,这些数据结构将根据这些测量结果进行排名,并呈现给用户以帮助进行手动调整。我们已经对19个中型/大型Java基准测试集进行了各种研究。借助提升性测量,我们在我们检查的大多数程序中发现了优化机会,并在其中一些程序中实现了显着的性能改进(例如,运行时间减少了82.1%)。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号