谁的基准线(编译器)?

摘要:编译速度和代码质量之间存在固有的权衡。这种权衡在动态环境中尤为明显,因为JIT编译时间会影响应用程序的运行时间。许多系统现在采用多个编译层次,其中一层提供快速编译速度,而另一层则速度较慢,但生成的代码质量较高。通过适当的启发式算法来确定何时使用每种编译器,整体性能比仅使用单个编译器要好。在2017年,WebAssembly被引入到Web平台时,大多数引擎都采用了优化编译器,并在执行之前预编译整个模块。然而,自那时以来,所有Web引擎都引入了用于Wasm的新的“基线”编译器层,以提高启动时间。此外,还出现了许多新的非Web引擎,其中一些也采用了简单的编译器。在本文中,我们揭示了用于Wasm的单遍编译器的内部算法和权衡,并对其在生产中的应用进行了详细的经验研究。我们展示了一个用于研究Wasm引擎的新型单遍编译器的设计,该编译器与原地解释器和主机垃圾收集器使用值标签进行集成。在实验中,我们测量了针对值标签成本的优化的效果,六个基线编译器的相对编译速度和执行时间,并将这些基线编译器与Wasm的其他执行层次在权衡空间中进行比较。

作者:Ben L. Titzer

论文ID:2305.13241

分类:Programming Languages

分类简称:cs.PL

提交时间:2023-05-23

PDF 下载: 英文版 中文版pdf翻译中