【24h】

Memento Mori: Dynamic Allocation-Site-Based Optimizations

机译:Memento Mori:基于动态分配站点的优化

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

摘要

Languages that lack static typing are ubiquitous in the world of mobile and web applications. The rapid rise of larger applications like interactive web GUIs, games, and cryptography presents a new range of implementation challenges for modern virtual machines to close the performance gap between typed and untyped languages. While all languages can benefit from efficient automatic memory management, languages like JavaScript present extra thrill with innocent-looking but difficult features like dynamically-sized arrays, deletable properties, and prototypes. Optimizing such languages requires complex dynamic techniques with more radical object layout strategies such as dynamically evolving representations for arrays. This paper presents a general approach for gathering temporal allocation site feedback that tackles both the general problem of object lifetime estimation and improves optimization of these problematic language features. We introduce a new implementation technique where allocation mementos processed by the garbage collector and runtime system efficiently tie objects back to allocation sites in the program and dynamically estimate object lifetime, representation, and size to inform three optimizations: pretenuring, pretransitioning, and presizing. Unlike previous work on pretenuring, our system utilizes allocation mementos to achieve fully dynamic allocation-sitebased pretenuring in a production system. We implement all of our techniques in V8, a high performance virtual machine for JavaScript, and demonstrate solid performance improvements across a range of benchmarks.
机译:缺少静态类型的语言在移动和Web应用程序世界中无处不在。诸如交互式Web GUI,游戏和加密之类的大型应用程序的迅速兴起,为现代虚拟机缩小了打字和非打字语言之间的性能差距提出了一系列新的实现挑战。尽管所有语言都可以从高效的自动内存管理中受益,但JavaScript之类的语言却具有无与伦比的但令人难忘的特性,如动态大小的数组,可删除的属性和原型,这些特性令人难忘。优化此类语言需要复杂的动态技术和更激进的对象布局策略,例如动态演化的数组表示形式。本文提出了一种收集时间分配站点反馈的通用方法,该方法既可以解决对象寿命估算的一般问题,又可以改善这些有问题的语言功能的优化。我们引入了一种新的实现技术,其中垃圾收集器和运行时系统处理的分配内存将对象有效地绑定到程序中的分配站点,并动态估计对象的生存期,表示形式和大小,以提供三种优化:预保留,预转换和预调整。与以前的预分配工作不同,我们的系统利用分配记忆在生产系统中实现完全动态的基于分配站点的预分配。我们在V8(用于JavaScript的高性能虚拟机)中实现了所有技术,并在一系列基准测试中证明了性能的稳步提高。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号