Results 1 -
3 of
3
Automatic Program Specialization for Java
- ACM Transactions on Programming Languages and Systems
, 2000
"... The object-oriented style of programming facilitates program adaptation and enhances program genericness, but at the expense of efficiency. We demonstrate experimentally that state-of-the-art Java compilation technology fails to compensate for the use of object-oriented abstractions to implement ..."
Abstract
-
Cited by 31 (3 self)
- Add to MetaCart
The object-oriented style of programming facilitates program adaptation and enhances program genericness, but at the expense of efficiency. We demonstrate experimentally that state-of-the-art Java compilation technology fails to compensate for the use of object-oriented abstractions to implement generic programs, and that program specialization can be used to eliminate these overheads. We present an automatic program specializer for Java, and demonstrate experimentally that significant speedups in program execution time can be obtained through automatic specialization. Although automatic program specialization could be seen as overlapping with existing optimizing compiler technology, we show that specialization and compiler optimization are in fact complementary. 1 Introduction Object-oriented languages encourage a style of programming that facilitates program adaptation. Encapsulation enhances code resilience to program modifications and increases the possibilities for di...
Representation-based just-in-time specialization and the Psyco prototype for Python
- Proceedings of the 2004 ACM SIGPLAN Workshop on Partial Evaluation and Semantics-based Program Manipulation
, 2004
"... Abstract. A powerful application of specialization is to remove interpretative overhead: a language can be implemented with an interpreter, whose performance is then improved by specializing it for a given program source. This approach is only moderately successful with very dynamic languages, where ..."
Abstract
-
Cited by 31 (2 self)
- Add to MetaCart
Abstract. A powerful application of specialization is to remove interpretative overhead: a language can be implemented with an interpreter, whose performance is then improved by specializing it for a given program source. This approach is only moderately successful with very dynamic languages, where the outcome of each single step can be highly dependent on run-time data. We introduce in the present paper two novel specialization techniques and discuss in particular their potential to close the performance gap between dynamic and static languages: Just-in-time specialization, or specialization by need, introduces the “unlifting” ability for a value to be promoted from run-time to compile-time during specialization – the converse of the lift operator of partial evaluation. Its presence gives an unusual and powerful perspective on the specialization process. Representations are a generalization of the traditional specialization domains, i.e. the compile-time/run-time dichotomy (also called static/dynamic, or “variables known at specialization time”/“variables only known at run time”). They provide a theory of data specialization. These two techniques together shift some traditional problems and limitations of specialization. We present the prototype Psyco for the Python language. 1
Aspect-Oriented Programming using Reflection
, 2001
"... What infrastructure is needed to support aspect-oriented software development? To the programmer, we must supply aspect-oriented (sub)languages that are based on the constructs and basic syntax that the programmer is most familiar with, as well as facilities for reifying and manipulating the cross-c ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
What infrastructure is needed to support aspect-oriented software development? To the programmer, we must supply aspect-oriented (sub)languages that are based on the constructs and basic syntax that the programmer is most familiar with, as well as facilities for reifying and manipulating the cross-cutting features of immediate concern. At the implementation level, the aspect specifications mu' insinuin themselves into the application proper. Furthermore, the support for aspect specification and integration should not impose a performance penalty on the application at r u time. We are conducting research into dynamic reflective object-oriented language design and implementation that provides a rich infrastructure for the development of aspect-oriented technology. The main concepts that we bring to bear are: Reflection and Dynamism: A program is able to reflect on its structure and behavior, and then modify its behavior. metaobject protocols rely on reflection to present a programmer-modifiable dynamic semantics. Syntactic abstraction: A procedu al, hygienic macro system facilitates implementation of AOP langu age extensions; Dynamic, Optimistic Optimization: Programs do not pay a performance penalty merely for the existence of a metaobject protocol. That is, if part of an application does not makeu se of the abstraction provided by a metaobject protocol, performance is as good as if the metaobject protocol did not exist.

