Who You Gonna Call: Analyzing the Run-Time Call-Site Behavior of Ruby Applications

Who You Gonna Call: Analyzing the Run-Time Call-Site Behavior of Ruby Applications
复制标题

你要打电话给谁:分析 Ruby 应用程序的运行时调用站点行为

DOI:
10.1145/3563834.3567538
复制
发表时间:
2022
期刊:
--
影响因子:
--
通讯作者:
Kaleba S
Kaleba S
中科院分区:
--
文献类型:
--
作者:
Kaleba S

文献摘要

参考文献

被引文献

相似文献

用动态语言编写的应用程序变得越来越大,公司越来越多地在生产中使用数百万行代码库。同时,动态语言严重依赖于动态优化,特别是那些减少方法调用开销的动态优化。 在这项工作中,我们研究了Ruby基准测试的调用站点行为,这些基准测试用于指导即将到来的Ruby实现(如TruffleRuby和YJIT)的开发。 我们研究了调用站点查找缓存,方法拆分和消除重复调用目标的相互作用。 我们发现,这些优化对小型和大型基准测试、方法和闭包都非常有效,并有助于为进一步优化(如内联)打开机会。然而,我们表明,TruffleRuby的分裂可能会过于积极地应用在已经单态的调用网站,在运行时的成本。 我们还发现了三种不同的模式,随着时间的推移,呼叫网站的行为的演变,这可能有助于指导新的优化。我们相信,我们的研究结果可能会支持语言实现者在优化运行时系统的大型代码库中内置的动态语言。
Applications written in dynamic languages are becoming larger and larger and companies increasingly use multi-million line codebases in production. At the same time, dynamic languages rely heavily on dynamic optimizations, particularly those that reduce the overhead of method calls. In this work, we study the call-site behavior of Ruby benchmarks that are being used to guide the development of upcoming Ruby implementations such as TruffleRuby and YJIT. We study the interaction of call-site lookup caches, method splitting, and elimination of duplicate call-targets. We find that these optimizations are indeed highly effective on both smaller and large benchmarks, methods and closures alike, and help to open up opportunities for further optimizations such as inlining. However, we show that TruffleRuby’s splitting may be applied too aggressively on already-monomorphic call-sites, coming at a run-time cost. We also find three distinct patterns in the evolution of call-site behavior over time, which may help to guide novel optimizations. We believe that our results may support language implementers in optimizing runtime systems for large code-bases built in dynamic languages.
DOI: --
发表时间: 2018
期刊: Proc. ACM Program. Lang.
影响因子: --
作者:
Benoit Daloze;A. Tal;Stefan Marr;H. Mössenböck;E. Petrank
通讯作者: E. Petrank
YJIT:CRuby 的基本块版本控制 JIT 编译器
DOI: --
发表时间: 2021
期刊: VMIL@SPLASH
影响因子: --
作者:
Maxime Chevalier;Noah Gibbs;J. Boussier;Si Xing Wu;Aaron Patterson;Kevin Newton;J. Hawthorn
通讯作者: J. Hawthorn
跨语言编译器基准测试:我们快了吗?
DOI: --
发表时间: 2016
期刊: Dynamic Languages Symposium
影响因子: --
作者:
Stefan Marr;Benoit Daloze;H. Mössenböck
通讯作者: H. Mössenböck
java 程序中相行为的分析、检测和利用
DOI: --
发表时间: 2007
期刊:
影响因子: --
作者:
H. Sumikura;L. Arendt
通讯作者: L. Arendt
函数专业化的上下文调度
DOI: 10.1145/3428288
发表时间: 2020
影响因子: --
作者:
Flückiger, Olivier;Chari, Guido;Yee, Ming-Ho;Ječmen, Jan;Hain, Jakob;Vitek, Jan
通讯作者: Vitek, Jan