首页 > 最新文献

Dynamic Languages Symposium最新文献

英文 中文
Polymorphic type inference for scripting languages with object extensions 具有对象扩展的脚本语言的多态类型推断
Pub Date : 2011-10-24 DOI: 10.1145/2047849.2047855
Tian Zhao
This paper presents a polymorphic type inference algorithm for a small subset of JavaScript. The goal is to prevent accessing undefined members of objects. We define a type system that allows explicit extension of objects through add operation and implicit extension through method calls. The type system also permits strong updates and unrestricted extensions to new objects. The type inference algorithm is modular so that each function definition is only analyzed once and larger programs can be checked incrementally.
本文针对JavaScript的一个小子集提出了一种多态类型推断算法。目标是防止访问对象的未定义成员。我们定义了一个类型系统,允许通过add操作显式扩展对象,并通过方法调用隐式扩展对象。类型系统还允许对新对象进行强更新和无限制扩展。类型推断算法是模块化的,因此每个函数定义只分析一次,而更大的程序可以逐步检查。
{"title":"Polymorphic type inference for scripting languages with object extensions","authors":"Tian Zhao","doi":"10.1145/2047849.2047855","DOIUrl":"https://doi.org/10.1145/2047849.2047855","url":null,"abstract":"This paper presents a polymorphic type inference algorithm for a small subset of JavaScript. The goal is to prevent accessing undefined members of objects. We define a type system that allows explicit extension of objects through add operation and implicit extension through method calls. The type system also permits strong updates and unrestricted extensions to new objects. The type inference algorithm is modular so that each function definition is only analyzed once and larger programs can be checked incrementally.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"31 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125550583","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 14
Places: adding message-passing parallelism to racket 位置:向球拍添加消息传递并行性
Pub Date : 2011-10-24 DOI: 10.1145/2047849.2047860
K. Tew, J. Swaine, M. Flatt, R. Findler, P. Dinda
Places bring new support for message-passing parallelism to Racket. This paper gives an overview of the programming model and how we had to modify our existing, sequential runtime-system to support places. We show that the freedom to design the programming model helped us to make the implementation tractable; specifically, we avoided the conventional pain of adding just the right amount of locking to a big, legacy runtime system. The paper presents an evaluation of the design that includes both a real-world application and standard parallel benchmarks.
场所为Racket带来了新的消息传递并行性支持。本文概述了编程模型,以及我们必须如何修改现有的顺序运行时系统以支持位置。我们表明,设计编程模型的自由帮助我们使实现易于处理;具体来说,我们避免了向大型遗留运行时系统添加适量锁定的传统痛苦。本文对该设计进行了评估,包括实际应用和标准并行基准测试。
{"title":"Places: adding message-passing parallelism to racket","authors":"K. Tew, J. Swaine, M. Flatt, R. Findler, P. Dinda","doi":"10.1145/2047849.2047860","DOIUrl":"https://doi.org/10.1145/2047849.2047860","url":null,"abstract":"Places bring new support for message-passing parallelism to Racket. This paper gives an overview of the programming model and how we had to modify our existing, sequential runtime-system to support places. We show that the freedom to design the programming model helped us to make the implementation tractable; specifically, we avoided the conventional pain of adding just the right amount of locking to a big, legacy runtime system. The paper presents an evaluation of the design that includes both a real-world application and standard parallel benchmarks.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"242 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123071866","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 15
Bounded-latency regional garbage collection 有界延迟区域垃圾收集
Pub Date : 2011-10-24 DOI: 10.1145/2047849.2047859
Felix S. Klock, William D. Clinger
Regional garbage collection is scalable, with theoretical worst-case bounds for gc latency, MMU, and throughput that are independent of mutator behavior and the volume of reachable storage. Regional collection improves upon the worst-case pause times and MMU seen in most other general-purpose collectors, including garbage-first and concurrent mark/sweep collectors.
区域垃圾收集是可伸缩的,具有gc延迟、MMU和吞吐量的理论最坏情况边界,这些边界独立于mutator行为和可访问存储器的容量。区域收集改进了大多数其他通用收集器(包括垃圾优先和并发标记/清除收集器)中出现的最坏情况暂停时间和MMU。
{"title":"Bounded-latency regional garbage collection","authors":"Felix S. Klock, William D. Clinger","doi":"10.1145/2047849.2047859","DOIUrl":"https://doi.org/10.1145/2047849.2047859","url":null,"abstract":"Regional garbage collection is scalable, with theoretical worst-case bounds for gc latency, MMU, and throughput that are independent of mutator behavior and the volume of reachable storage. Regional collection improves upon the worst-case pause times and MMU seen in most other general-purpose collectors, including garbage-first and concurrent mark/sweep collectors.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"144 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131682678","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
Static vs. dynamic type systems: an empirical study about the relationship between type casts and development time 静态与动态类型系统:类型转换与开发时间关系的实证研究
Pub Date : 2011-10-24 DOI: 10.1145/2047849.2047861
Andreas Stuchlik, Stefan Hanenberg
Static type systems are essential in computer science. However, there is hardly any knowledge about the impact of type systems on the resulting piece of software. While there are authors that state that static types increase the development speed, other authors argue the other way around. A previous experiment suggests that there are multiple factors that play a role for a comparison of statically and dynamically typed language. As a follow-up, this paper presents an empirical study with 21 subjects that compares programming tasks performed in Java and Groovy - programming tasks where the number of expected type casts vary in the statically typed language. The result of the study is, that the dynamically typed group solved the complete programming tasks significantly faster for most tasks - but that for larger tasks with a higher number of type casts no significant difference could be found.
静态类型系统在计算机科学中是必不可少的。然而,几乎没有任何关于类型系统对最终软件的影响的知识。虽然有些作者认为静态类型提高了开发速度,但其他作者却持相反的观点。之前的一项实验表明,有多种因素对静态类型语言和动态类型语言的比较起作用。作为后续,本文提出了一项有21个主题的实证研究,比较了在Java和Groovy中执行的编程任务-在静态类型语言中预期类型强制转换的数量不同的编程任务。研究的结果是,对于大多数任务,动态类型组解决完整的编程任务的速度要快得多——但是对于具有大量类型强制转换的大型任务,没有发现显著的差异。
{"title":"Static vs. dynamic type systems: an empirical study about the relationship between type casts and development time","authors":"Andreas Stuchlik, Stefan Hanenberg","doi":"10.1145/2047849.2047861","DOIUrl":"https://doi.org/10.1145/2047849.2047861","url":null,"abstract":"Static type systems are essential in computer science. However, there is hardly any knowledge about the impact of type systems on the resulting piece of software. While there are authors that state that static types increase the development speed, other authors argue the other way around. A previous experiment suggests that there are multiple factors that play a role for a comparison of statically and dynamically typed language. As a follow-up, this paper presents an empirical study with 21 subjects that compares programming tasks performed in Java and Groovy - programming tasks where the number of expected type casts vary in the statically typed language. The result of the study is, that the dynamically typed group solved the complete programming tasks significantly faster for most tasks - but that for larger tasks with a higher number of type casts no significant difference could be found.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"8 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130813348","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 43
The impact of optional type information on jit compilation of dynamically typed languages 可选类型信息对动态类型语言jit编译的影响
Pub Date : 2011-10-24 DOI: 10.1145/2047849.2047853
Mason Chang, B. Mathiske, Edwin W. Smith, A. Chaudhuri, A. Gal, Michael Bebenita, Christian Wimmer, M. Franz
Optionally typed languages enable direct performance comparisons between untyped and type annotated source code. We present a comprehensive performance evaluation of two different JIT compilers in the context of ActionScript, a production-quality optionally typed language. One JIT compiler is optimized for quick compilation rather than JIT compiled code performance. The second JIT compiler is a more aggressively optimizing compiler, performing both high-level and low-level optimizations. We evaluate both JIT compilers directly on the same benchmark suite, measuring their performance changes across fully typed, partially typed, and untyped code. Such evaluations are especially relevant to dynamically typed languages such as JavaScript, which are currently evaluating the idea of adding optional type annotations. We demonstrate that low-level optimizations rarely accelerate the program enough to pay back the investment into performing them in an optionally typed language. Our experiments and data demonstrate that high-level optimizations are required to improve performance by any significant amount.
可选类型语言支持在未类型和带类型注释的源代码之间进行直接性能比较。我们在ActionScript(一种生产质量的可选类型语言)的背景下对两种不同的JIT编译器进行了全面的性能评估。一个JIT编译器针对快速编译而不是JIT编译的代码性能进行了优化。第二个JIT编译器是一个更积极的优化编译器,执行高级和低级优化。我们在相同的基准测试套件上直接评估这两个JIT编译器,测量它们在完全类型、部分类型和非类型代码中的性能变化。这样的计算与动态类型语言(如JavaScript)特别相关,这些语言目前正在考虑添加可选类型注释的想法。我们证明,低级优化很少能使程序加速到足以回报在可选类型语言中执行它们的投资。我们的实验和数据表明,要大幅度提高性能,需要进行高级优化。
{"title":"The impact of optional type information on jit compilation of dynamically typed languages","authors":"Mason Chang, B. Mathiske, Edwin W. Smith, A. Chaudhuri, A. Gal, Michael Bebenita, Christian Wimmer, M. Franz","doi":"10.1145/2047849.2047853","DOIUrl":"https://doi.org/10.1145/2047849.2047853","url":null,"abstract":"Optionally typed languages enable direct performance comparisons between untyped and type annotated source code. We present a comprehensive performance evaluation of two different JIT compilers in the context of ActionScript, a production-quality optionally typed language. One JIT compiler is optimized for quick compilation rather than JIT compiled code performance. The second JIT compiler is a more aggressively optimizing compiler, performing both high-level and low-level optimizations.\u0000 We evaluate both JIT compilers directly on the same benchmark suite, measuring their performance changes across fully typed, partially typed, and untyped code. Such evaluations are especially relevant to dynamically typed languages such as JavaScript, which are currently evaluating the idea of adding optional type annotations. We demonstrate that low-level optimizations rarely accelerate the program enough to pay back the investment into performing them in an optionally typed language. Our experiments and data demonstrate that high-level optimizations are required to improve performance by any significant amount.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"15 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134537150","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 15
Explicit use-case representation in object-oriented programming languages 面向对象编程语言中的显式用例表示
Pub Date : 2011-10-24 DOI: 10.1145/2047849.2047856
R. Hirschfeld, M. Perscheid, M. Haupt
Use-cases are considered an integral part of most contemporary development processes since they describe a software system's expected behavior from the perspective of its prospective users. However, the presence of and traceability to use-cases is increasingly lost in later more code-centric development activities. Use-cases, being well-encapsulated at the level of requirements descriptions, eventually lead to crosscutting concerns in system design and source code. Tracing which parts of the system contribute to which use-cases is therefore hard and so limits understandability. In this paper, we propose an approach to making use-cases first-class entities in both the programming language and the runtime environment. Having use-cases present in the code and the running system will allow developers, maintainers, and operators to easily associate their units of work with what matters to the users. We suggest the combination of use-cases, acceptance tests, and dynamic analysis to automatically associate source code with use-cases. We present UseCasePy, an implementation of our approach to use-case-centered development in Python, and its application to the Django Web framework.
用例被认为是大多数现代开发过程的一个组成部分,因为它们从潜在用户的角度描述了软件系统的预期行为。然而,用例的存在和对用例的可追溯性在后来更加以代码为中心的开发活动中逐渐丢失。用例,被很好地封装在需求描述的层次上,最终会导致系统设计和源代码中的横切关注点。因此,跟踪系统的哪些部分对哪些用例做出了贡献是困难的,因此限制了可理解性。在本文中,我们提出了一种在编程语言和运行时环境中创建用例一级实体的方法。将用例呈现在代码和运行的系统中,将允许开发人员、维护人员和操作人员轻松地将他们的工作单元与对用户重要的内容联系起来。我们建议将用例、验收测试和动态分析结合起来,以自动地将源代码与用例关联起来。我们介绍了UseCasePy,这是我们在Python中以用例为中心的开发方法的实现,以及它在Django Web框架中的应用。
{"title":"Explicit use-case representation in object-oriented programming languages","authors":"R. Hirschfeld, M. Perscheid, M. Haupt","doi":"10.1145/2047849.2047856","DOIUrl":"https://doi.org/10.1145/2047849.2047856","url":null,"abstract":"Use-cases are considered an integral part of most contemporary development processes since they describe a software system's expected behavior from the perspective of its prospective users. However, the presence of and traceability to use-cases is increasingly lost in later more code-centric development activities. Use-cases, being well-encapsulated at the level of requirements descriptions, eventually lead to crosscutting concerns in system design and source code. Tracing which parts of the system contribute to which use-cases is therefore hard and so limits understandability.\u0000 In this paper, we propose an approach to making use-cases first-class entities in both the programming language and the runtime environment. Having use-cases present in the code and the running system will allow developers, maintainers, and operators to easily associate their units of work with what matters to the users. We suggest the combination of use-cases, acceptance tests, and dynamic analysis to automatically associate source code with use-cases. We present UseCasePy, an implementation of our approach to use-case-centered development in Python, and its application to the Django Web framework.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"65 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121919384","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 18
HappyJIT: a tracing JIT compiler for PHP HappyJIT:用于PHP的跟踪JIT编译器
Pub Date : 2011-10-24 DOI: 10.1145/2047849.2047854
Andrei Homescu, Alex Suhan
Current websites are a combination of server-generated dynamic content with client-side interactive programs. Dynamically - typed languages have gained a lot of ground in both of these domains. The growth of Web 2.0 has introduced a myriad of websites which contain personalized content, which is specific to the user. PHP or Python programs generate the actual HTML page after querying a database and processing the results, which are then presented by the browser. It is becoming more and more vital to accelerate the execution of these programs, as this is a significant part of the total time needed to present the page to the user. This paper presents a novel interpreter for the PHP language written in RPython, which the PyPy translator then translates into C. The translator integrates into the interpreter a tracing just-in-time compiler which optimizes the hottest loops in the interpreted programs. We also describe a data model that supports all the data types in the PHP language, such as references and iterators. We evaluate the performance of this interpreter, showing that speedups up to a factor of 8 are observed using this approach.
当前的网站是服务器生成的动态内容与客户端交互程序的组合。动态类型语言在这两个领域都取得了很大的进展。Web 2.0的发展引入了大量包含个性化内容的网站,这些内容是针对用户的。PHP或Python程序在查询数据库并处理结果之后生成实际的HTML页面,然后由浏览器呈现。加速这些程序的执行变得越来越重要,因为这是向用户呈现页面所需总时间的重要组成部分。本文介绍了一种用RPython编写的PHP语言解释器,然后PyPy翻译器将其翻译成c语言。翻译器将跟踪实时编译器集成到解释器中,该编译器可以优化被解释程序中的最热循环。我们还描述了一个支持PHP语言中所有数据类型(如引用和迭代器)的数据模型。我们评估了这个解释器的性能,表明使用这种方法可以观察到高达8倍的加速。
{"title":"HappyJIT: a tracing JIT compiler for PHP","authors":"Andrei Homescu, Alex Suhan","doi":"10.1145/2047849.2047854","DOIUrl":"https://doi.org/10.1145/2047849.2047854","url":null,"abstract":"Current websites are a combination of server-generated dynamic content with client-side interactive programs. Dynamically - typed languages have gained a lot of ground in both of these domains. The growth of Web 2.0 has introduced a myriad of websites which contain personalized content, which is specific to the user. PHP or Python programs generate the actual HTML page after querying a database and processing the results, which are then presented by the browser. It is becoming more and more vital to accelerate the execution of these programs, as this is a significant part of the total time needed to present the page to the user.\u0000 This paper presents a novel interpreter for the PHP language written in RPython, which the PyPy translator then translates into C. The translator integrates into the interpreter a tracing just-in-time compiler which optimizes the hottest loops in the interpreted programs. We also describe a data model that supports all the data types in the PHP language, such as references and iterators. We evaluate the performance of this interpreter, showing that speedups up to a factor of 8 are observed using this approach.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"81 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124289783","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 20
Factor: a dynamic stack-based programming language 因素:一种动态的基于堆栈的编程语言
Pub Date : 2010-10-18 DOI: 10.1145/1869631.1869637
Sviatoslav Pestov, Daniel Ehrenberg, Joseph Groff
Factor is a new dynamic object-oriented programming language. It began as an embedded scripting language and evolved to a mature application development language. The language has a simple execution model and is based on the manipulation of data on a stack. An advanced metaprogramming system provides means for easily extending the language. Thus, Factor allows programmers to use the right features for their problem domain. The Factor implementation is self-hosting, featuring an interactive development environment and an optimizing compiler. In this paper, the language and its implementation are presented.
因子是一种新兴的动态面向对象程序设计语言。它最初是一种嵌入式脚本语言,后来发展成为一种成熟的应用程序开发语言。该语言具有简单的执行模型,并且基于对堆栈上数据的操作。高级元编程系统提供了轻松扩展语言的方法。因此,Factor允许程序员为他们的问题域使用正确的特性。Factor实现是自托管的,具有交互式开发环境和优化编译器。本文给出了该语言及其实现。
{"title":"Factor: a dynamic stack-based programming language","authors":"Sviatoslav Pestov, Daniel Ehrenberg, Joseph Groff","doi":"10.1145/1869631.1869637","DOIUrl":"https://doi.org/10.1145/1869631.1869637","url":null,"abstract":"Factor is a new dynamic object-oriented programming language. It began as an embedded scripting language and evolved to a mature application development language. The language has a simple execution model and is based on the manipulation of data on a stack. An advanced metaprogramming system provides means for easily extending the language. Thus, Factor allows programmers to use the right features for their problem domain. The Factor implementation is self-hosting, featuring an interactive development environment and an optimizing compiler. In this paper, the language and its implementation are presented.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"42 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-10-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125696837","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 8
Efficient interpretation using quickening 使用加速的高效口译
Pub Date : 2010-10-18 DOI: 10.1145/1869631.1869633
Stefan Brunthaler
Just-in-time compilers offer the biggest achievable payoff performance-wise, but their implementation is a non-trivial, time-consuming task affecting the interpreter's maintenance for years to come, too. Recent research addresses this issue by providing ways of leveraging existing just-in-time compilation infrastructures. Though there has been considerable research on improving the efficiency of just-in-time compilers, the area of optimizing interpreters has gotten less attention as if the implementation of a dynamic translation system was the "ultima ratio" for efficiently interpreting programming languages. We present optimization techniques for improving the efficiency of interpreters without requiring just-in-time compilation thereby maintaining the ease-of-implementation characteristic that brought many people to implementing an interpreter in the first place.
即时编译器在性能方面提供了最大的可实现回报,但是它们的实现是一项重要的、耗时的任务,也会影响解释器在未来几年的维护。最近的研究通过提供利用现有即时编译基础结构的方法来解决这个问题。虽然在提高即时编译器的效率方面已经有了相当多的研究,但优化解释器的领域却很少受到关注,好像动态翻译系统的实现是高效解释编程语言的“终极目标”。我们提出了一些优化技术,用于提高解释器的效率,而不需要即时编译,从而保持易于实现的特性,而正是这种特性使许多人首先实现了解释器。
{"title":"Efficient interpretation using quickening","authors":"Stefan Brunthaler","doi":"10.1145/1869631.1869633","DOIUrl":"https://doi.org/10.1145/1869631.1869633","url":null,"abstract":"Just-in-time compilers offer the biggest achievable payoff performance-wise, but their implementation is a non-trivial, time-consuming task affecting the interpreter's maintenance for years to come, too. Recent research addresses this issue by providing ways of leveraging existing just-in-time compilation infrastructures.\u0000 Though there has been considerable research on improving the efficiency of just-in-time compilers, the area of optimizing interpreters has gotten less attention as if the implementation of a dynamic translation system was the \"ultima ratio\" for efficiently interpreting programming languages. We present optimization techniques for improving the efficiency of interpreters without requiring just-in-time compilation thereby maintaining the ease-of-implementation characteristic that brought many people to implementing an interpreter in the first place.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-10-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130446451","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 40
Alias analysis for optimization of dynamic languages 动态语言优化的别名分析
Pub Date : 2010-10-18 DOI: 10.1145/1869631.1869635
Michael Gorbovitski, Yanhong A. Liu, S. Stoller, Tom Rothamel, K. T. Tekle
Dynamic languages such as Python allow programs to be written more easily using high-level constructs such as comprehensions for queries and using generic code. Efficient execution of programs then requires powerful optimizations - incrementalization of expensive queries and specialization of generic code. Effective incrementalization and specialization of dynamic languages require precise and scalable alias analysis. This paper describes the development and experimental evaluation of a may-alias analysis for a full dynamic object-oriented language, for program optimization by incrementalization and specialization. The analysis is flow-sensitive; we show that this is necessary for effective optimization of dynamic languages. It uses precise type analysis and a powerful form of context sensitivity, called trace sensitivity, to further improve analysis precision. It uses a compressed representation to significantly reduce the memory used by flow-sensitive analyses.We evaluate the effectiveness of this analysis and 17 variants of it for incrementalization and specialization of Python programs, and we evaluate the precision, memory usage, and running time of these analyses on programs of diverse sizes. The results show that our analysis has acceptable precision and efficiency and represents the best trade-off between them compared to the variants.
像Python这样的动态语言允许使用高级结构(如查询的推导式)和使用泛型代码更容易地编写程序。因此,程序的高效执行需要强大的优化——对昂贵的查询进行增量化,并对泛型代码进行专门化。动态语言的有效增量化和专门化需要精确和可扩展的别名分析。本文描述了一个全动态面向对象语言的多别名分析的开发和实验评估,用于通过增量化和专门化进行程序优化。分析是流量敏感的;我们证明了这对于动态语言的有效优化是必要的。它使用精确的类型分析和一种强大的上下文敏感性形式(称为跟踪敏感性)来进一步提高分析精度。它使用压缩表示来显著减少流敏感分析所使用的内存。我们评估了这种分析的有效性,以及它的17种变体,用于Python程序的增量化和专门化,我们评估了这些分析在不同大小的程序上的精度、内存使用和运行时间。结果表明,我们的分析具有可接受的精度和效率,并代表了两者之间的最佳权衡。
{"title":"Alias analysis for optimization of dynamic languages","authors":"Michael Gorbovitski, Yanhong A. Liu, S. Stoller, Tom Rothamel, K. T. Tekle","doi":"10.1145/1869631.1869635","DOIUrl":"https://doi.org/10.1145/1869631.1869635","url":null,"abstract":"Dynamic languages such as Python allow programs to be written more easily using high-level constructs such as comprehensions for queries and using generic code. Efficient execution of programs then requires powerful optimizations - incrementalization of expensive queries and specialization of generic code. Effective incrementalization and specialization of dynamic languages require precise and scalable alias analysis.\u0000 This paper describes the development and experimental evaluation of a may-alias analysis for a full dynamic object-oriented language, for program optimization by incrementalization and specialization. The analysis is flow-sensitive; we show that this is necessary for effective optimization of dynamic languages. It uses precise type analysis and a powerful form of context sensitivity, called trace sensitivity, to further improve analysis precision. It uses a compressed representation to significantly reduce the memory used by flow-sensitive analyses.We evaluate the effectiveness of this analysis and 17 variants of it for incrementalization and specialization of Python programs, and we evaluate the precision, memory usage, and running time of these analyses on programs of diverse sizes. The results show that our analysis has acceptable precision and efficiency and represents the best trade-off between them compared to the variants.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-10-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128635872","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 44
期刊
Dynamic Languages Symposium
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1