Most partial evaluators do not take the availability of machine-level resources, such as registers or cache, into consideration when making their specialization decisions. The resulting resource contention can lead to severe performance degradation---causing, in extreme cases, the specialized code to run slower than the unspecialized code. In this paper we consider how resource considerations can be incorporated within a partial evaluator. We develop an abstract formulation of the problem, show that optimal resource-bounded partial evaluation is NP-complete, and discuss simple heuristics that can be used to address the problem in practice. 1
|
7715
|
Computers and Intractability: A Guide to the Theory of NP-Completeness
– Garey, Johnson
- 1979
|
|
529
|
A transformation system for developing recursive programs
– Burstall, Darlington
- 1977
|
|
247
|
Profile guided code positioning
– Pettis, Hansen
- 1990
|
|
174
|
Type-directed partial evaluation
– Danvy
- 1996
|
|
152
|
Achieving high instruction cache performance with an optimizing compiler
– CHANG
- 1989
|
|
93
|
Mixtus: An automatic partial evaluator for full Prolog
– Sahlin
- 1993
|
|
87
|
Selective specialization for object-oriented languages
– Dean, Chambers, et al.
- 1995
|
|
68
|
Binding Time Analysis for Higher Order Untyped Functional Languages
– Consel
- 1990
|
|
57
|
Efficient multi-level generating extensions for program specialization
– Gluck, Jorgensen
- 1995
|
|
52
|
Toward Better Inlining Decisions Using Inlining Trials. To appear
– Dean, Chambers
- 1994
|
|
48
|
A study of scalar compilation techniques for pipelined supercomputers
– Weiss, Smith
- 1987
|
|
46
|
Partial evaluation of Standard ML
– Birkedal, Welinder
- 1993
|
|
45
|
Inline function expansion for compiling C programs
– Hwu, Chang
- 1989
|
|
40
|
Finiteness analysis
– Holst
- 1991
|
|
39
|
Subprogram inlining: A study of its effects on program execution time
– Davidson, Holler
- 1992
|
|
36
|
Bigloo: a portable and optimizing compiler for strict functional languages
– Serrano, Weis
- 1995
|
|
33
|
Partial evaluation of numerical programs in Fortran
– Baier, Gluck, et al.
- 1994
|
|
32
|
A Self-Applicable Partial Evaluator for the Logic Programming Language Godel
– Gurr
- 1994
|
|
22
|
BTA algorithms to ensure termination of off-line partial evaluation
– Glenstrup, Jones
- 1996
|
|
19
|
Speedup Analysis in Partial Evaluation (Prelimi-nary Results
– Andersen, Gomard
- 1992
|
|
18
|
Unrolling loops in FORTRAN
– Dongarra, Hinds
- 1979
|
|
14
|
Program analysis and specialization for the C programming language
– ANDERSON
- 1994
|
|
12
|
Termination analysis for offline partial evaluation of a higher order functional language
– Andersen, Holst
- 1996
|
|
10
|
Similix 5.0 manual
– Bondorf
- 1993
|
|
5
|
Automating header prediction
– Castelluccia
- 1996
|
|
5
|
Hwu, "The Effect of Code Expanding Optimizations on Instruction Cache Design
– Chen, Chang, et al.
- 1993
|
|
5
|
An aggressive approach to loop unrolling
– Davidson, Jinturkar
- 1995
|
|
4
|
Program Analysis and Optimization for Machines with Instruction Cache
– McFarling
- 1988
|
|
4
|
Analysis of Techniques to
– Mosberger, Peterson, et al.
- 1996
|
|
1
|
Improving the I-Cache Effectiveness of Network Software
– Mosberger, Peterson, et al.
- 1996
|
|
1
|
Reducibility among Combinatorial Problems", in Complexity of Computer Computations
– R
- 1972
|
|
1
|
Bigloo User's Manual, INRIA Rocquencourt
– Serrano
- 1996
|