首页> 外文会议>ACM SIGPLAN/SIGOPS international conference on virtual execution environments >Adding Dynamically-Typed Language Support to a Statically-Typed Language Compiler: Performance Evaluation, Analysis, and Tradeoffs
【24h】

Adding Dynamically-Typed Language Support to a Statically-Typed Language Compiler: Performance Evaluation, Analysis, and Tradeoffs

机译:向静态类型的语言编译器添加动态类型的语言支持:性能评估,分析和权衡

获取原文

摘要

Applications written in dynamically typed scripting languages are increasingly popular for Web software development. Even on the server side, programmers are using dynamically typed scripting languages such as Ruby and Python to build complex applications quickly. As the number and complexity of dynamically typed scripting language applications grows, optimizing their performance is becoming important. Some of the best performing compilers and optimizers for dynamically typed scripting languages are developed entirely from scratch and target a specific language. This approach is not scalable, given the variety of dynamically typed scripting languages, and the effort involved in developing and maintaining separate infrastructures for each. In this paper, we evaluate the feasibility of adapting and extending an existing production-quality method-based Just-In-Time (JIT) compiler for a language with dynamic types. Our goal is to identify the challenges and shortcomings with the current infrastructure, and to propose and evaluate runtime techniques and optimizations that can be incorporated into a common optimization infrastructure for static and dynamic languages. We discuss three extensions to the compiler to support dynamically typed languages: (1) simplification of control flow graphs, (2) mapping of memory locations to stack-allocated variables, and (3) reduction of runtime overhead using language semantics. We also propose four new optimizations for Python in (2) and (3). These extensions are effective in reduction of compiler working memory and improvement of runtime performance. We present a detailed performance evaluation of our approach for Python, finding an overall improvement of 1.69x on average (up to 2.74x) over our JIT compiler without any optimization for dynamically typed languages and Python.
机译:用动态类型的脚本语言编写的应用程序对于Web软件开发越来越受欢迎。即使在服务器端,程序员也使用Ruby和Python等动态类型的脚本语言来快速构建复杂的应用程序。随着动态类型的脚本语言应用程序的数量和复杂性的增长,优化其性能变得越来越重要。用于动态类型的脚本语言的一些性能最佳的编译器和优化器完全是从头开始开发的,并且针对特定的语言。考虑到动态类型的脚本语言的多样性,以及为每种语言开发和维护单独的基础结构所涉及的工作,这种方法是不可扩展的。在本文中,我们评估了为具有动态类型的语言改编和扩展现有的基于生产质量方法的即时(JIT)编译器的可行性。我们的目标是确定当前基础结构所面临的挑战和不足,并提出和评估可纳入静态和动态语言的通用优化基础结构中的运行时技术和优化。我们讨论了对编译器的三个扩展,以支持动态类型的语言:(1)简化控制流程图,(2)将内存位置映射到堆栈分配的变量,以及(3)使用语言语义来减少运行时开销。我们还在(2)和(3)中为Python提出了四个新的优化方案。这些扩展有效地减少了编译器的工作内存并提高了运行时性能。我们对Python方法进行了详细的性能评估,发现与我们的JIT编译器相比,平均改进了1.69倍(最高2.74倍),而没有对动态类型语言和Python进行任何优化。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号