首页> 外文期刊>Concurrency and Computation >Object combining: a new aggressive optimization for object intensive programs
【24h】

Object combining: a new aggressive optimization for object intensive programs

机译:对象合并:针对对象密集型程序的全新积极优化

获取原文
获取原文并翻译 | 示例

摘要

Object combining tries to put objects together that have roughly the same life times in order to reduce strain on the memory manager and to reduce the number of pointer indirections during a program's execution. Object combining works by appending the fields of one object to another, allowing allocation and freeing of multiple objects with a single heap (de(allocation. Unlike object Mining, which will only optimize objects where one has a (unique) pointer to another, our optimization also works if there is no such relation. Object inlining also directly replaces the pointer by the inlined object's fields. Object combining leaves the pointer in place to allow more combining. Elimination of the pointer accesses is implemented in a separate compiler optimization pass. Unlike previous object inlining systems, reference field overwrites arc allowed and handled, resulting in much more aggressive optimization. Our object combining heuristics also allow unrelated objects to be combined, for example, those allocated inside a loop; recursive data structures (linked lists, trees) can be allocated several at a time and objects that are always used together can bo combined. As Java explicitly permits code to be loaded at runtime and allows the new code to contribute to a running computation, we do not require a closed-world assumption to enable these optimizations (but it will increase performance). The main focus of object combining in this paper is on reducing object (de)allocation overhead, by reducing both garbage collection work and the number of object allocations. Reduction of memory management overhead causes execution time to be reduced by up to 35 %. Indirection removal further reduces execution time by up to 6 %.
机译:对象组合试图将具有大致相同寿命的对象放在一起,以减少对内存管理器的压力并减少程序执行期间的指针间接调用次数。对象合并的工作原理是将一个对象的字段附加到另一个对象上,从而允许在一个堆中分配和释放多个对象(de(分配。与对象挖掘不同,对象挖掘只会优化一个对象具有(唯一)指向另一个对象的指针)对象,如果没有这种关系,也可以进行优化;对象内联也可以直接用内联对象的字段替换指针;对象合并将指针留在原处以允许更多的合并;消除指针访问是在单独的编译器优化过程中实现的。在以前的对象内联系统中,引用字段允许并处理了覆盖区域,从而带来了更积极的优化,我们的对象组合启发式方法还允许组合无关对象,例如,在循环内分配的对象;递归数据结构(链接列表,树)一次可以分配多个,并且可以将总是一起使用的对象组合在一起,因为Java明确允许代码要在运行时加载并允许新代码有助于运行中的计算,我们不需要封闭世界的假设就可以进行这些优化(但它将提高性能)。本文中对象组合的主要重点是通过减少垃圾收集工作和对象分配数量来减少对象(取消)分配开销。减少内存管理开销可将执行时间减少多达35%。间接删除进一步减少了高达6%的执行时间。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号