Pycket: a tracing JIT for a functional language

Pycket: a tracing JIT for a functional language
复制标题

Pycket:函数式语言的跟踪 JIT

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

文献摘要

参考文献

被引文献

相似文献

我们提出了一个高性能的跟踪JIT编译器Pyrocket。Python支持Racket中的各种复杂功能,如契约、延续、类、结构、动态绑定等等。平均而言,在一套标准的基准测试中,Python的性能优于现有的编译器,包括Racket的JIT和其他高度优化的Scheme编译器。此外,Pyrocast为Racket代理提供了比现有系统更好的性能,大大减少了合约和渐进式输入的开销。我们验证了这一说法与现有的多个基准套件的性能评估。PyPython实现作为RPython元跟踪框架(最初为PyPy创建)的应用程序具有独立的兴趣,它可以自动从解释器生成跟踪JIT编译器。以前的元跟踪工作主要集中在字节码解释器上,而Python是一个基于CEK抽象机的高级解释器,直接在抽象语法树上操作。Python支持正确的尾调用和一级延续。在函数式语言的设置中,递归和高阶函数比显式循环更普遍,跟踪JIT最重要的性能挑战是识别哪些控制流构成循环-我们讨论两种识别循环的策略并测量它们的影响。
We present Pycket, a high-performance tracing JIT compiler for Racket. Pycket supports a wide variety of the sophisticated features in Racket such as contracts, continuations, classes, structures, dynamic binding, and more. On average, over a standard suite of benchmarks, Pycket outperforms existing compilers, both Racket's JIT and other highly-optimizing Scheme compilers. Further, Pycket provides much better performance for Racket proxies than existing systems, dramatically reducing the overhead of contracts and gradual typing. We validate this claim with performance evaluation on multiple existing benchmark suites. The Pycket implementation is of independent interest as an application of the RPython meta-tracing framework (originally created for PyPy), which automatically generates tracing JIT compilers from interpreters. Prior work on meta-tracing focuses on bytecode interpreters, whereas Pycket is a high-level interpreter based on the CEK abstract machine and operates directly on abstract syntax trees. Pycket supports proper tail calls and first-class continuations. In the setting of a functional language, where recursion and higher-order functions are more prevalent than explicit loops, the most significant performance challenge for a tracing JIT is identifying which control flows constitute a loop---we discuss two strategies for identifying loops and measure their impact.
DOI: --
发表时间: 2011
期刊: ACM SIGPLAN International Conference on Functional Programming
影响因子: --
作者:
Tim Disney;C. Flanagan;J. McCarthy
通讯作者: J. McCarthy
HotpathVM:适用于资源受限设备的有效 JIT 编译器
DOI: 10.1145/1134760.1134780
发表时间: 2006
期刊: ArXiv
影响因子: --
作者:
A. Gal;Christian W. Probst;M. Franz
通讯作者: M. Franz
动态语言基于跟踪的即时类型专业化
DOI: 10.1145/1542476.1542528
发表时间: 2009
影响因子: 19
作者:
A. Gal;Brendan Eich;Mike Shaver;David Anderson;David Mandelin;M. Haghighat;Blake Kaplan;Graydon Hoare;B. Zbarsky;Jason Orendorff;J. Ruderman;Edwin W. Smith;Rick Reitmaier;Michael Bebenita;Mason Chang;M. Franz
通讯作者: M. Franz
JavaScript 的快速、精确的混合类型推理
DOI: 10.1145/2254064.2254094
发表时间: 2012
期刊: Proceedings of the 33rd ACM SIGPLAN Conference on Programming Language Design and Implementation
影响因子: --
作者:
Brian Hackett;Shu
通讯作者: Shu
使用连续标记对堆栈进行可移植和高级访问
DOI: --
发表时间: 2006
期刊:
影响因子: --
作者:
John Clements
通讯作者: John Clements