首页> 外文OA文献 >Object combining: a new aggressive optimization for object intensive programs: Research Articles
【2h】

Object combining: a new aggressive optimization for object intensive programs: Research Articles

机译:对象组合:针对对象密集型程序的新的积极优化方法:研究文章

摘要

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 inlining, 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 are 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 be 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%. Copyright © 2005 John Wiley & Sons, Ltd.
机译:对象组合试图将具有大致相同寿命的对象放在一起,以减少对内存管理器的压力并减少程序执行期间的指针间接调用次数。对象组合的工作原理是将一个对象的字段附加到另一个对象的字段,从而允许通过单个堆(取消)分配来分配和释放多个对象。与对象内联不同,对象内联仅将优化一个具有指向另一个的(唯一)指针的对象,如果没有这种关系,我们的优化也将起作用。对象内联还可以直接用内联对象的字段替换指针。对象合并将指针留在原处以允许更多合并。指针访问的消除在单独的编译器优化遍历中实现。与以前的对象内联系统不同,允许并处理参考字段覆盖,从而导致更加积极的优化。我们的对象组合启发式方法还允许组合无关对象,例如,在循环内分配的对象;可以一次分配多个递归数据结构(链接列表,树),并且可以将始终一起使用的对象组合在一起。由于Java明确允许在运行时加载代码并允许新代码对正在运行的计算作出贡献,因此我们不需要封闭世界的假设即可启用这些优化(但它将提高性能)。本文中对象组合的主要重点是通过减少垃圾收集工作和对象分配数量来减少对象(取消)分配开销。减少内存管理开销可使执行时间最多减少35%。间接删除进一步减少了高达6%的执行时间。版权所有©2005 John Wiley&Sons,Ltd.

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号