This paper describes a general approach for automatic and accurate space and space-bound analyses for high-level languages, considering stack space, heap allocation and live heap space usage of programs. The approach is based on program analysis and transformations and is fully automatic. The analyses produce accurate upper bounds in the presence of partially known input structures. The analyses have been implemented, and experimental results conrm the accuracy. 1
|
5825
|
Introduction to Algorithms
– Cormen, Leiserson, et al.
- 2001
|
|
1463
|
The definition of Standard ML
– Milner, Tofte, et al.
- 1990
|
|
556
|
Structure and interpretation of computer programs
– Abelson, Sussman, et al.
- 1996
|
|
352
|
The omega test: a fast and practical integer programming algorithm for dependence analysis
– Pugh
- 1991
|
|
297
|
Garbage Collection: Algorithms for automatic dynamic memory management
– Jones, Lins
- 1996
|
|
249
|
Solving shape-analysis problems in languages with destructive updating
– Sagiv, Reps, et al.
- 1998
|
|
139
|
Reasoning about time in higher-level language software
– Shaw
- 1989
|
|
118
|
Predicting program execution times by analyzing static and dynamic program paths. Real-Time Systems
– Park
- 1993
|
|
106
|
Cache miss equations: A compiler framework for analyzing and tuning memory behavior
– Ghosh, Martonosi
- 1999
|
|
95
|
The Art of Computer Programming, volume 1
– Knuth
- 1973
|
|
93
|
An accurate worst case timing analysis for RISC processors
– Lim, Bae, et al.
- 1995
|
|
90
|
The De nition of Standard ML
– Milner, Tofte, et al.
- 1990
|
|
87
|
Proving the correctness of reactive systems using sized types
– Hughes, Pareto, et al.
- 1996
|
|
75
|
Resource bound certification
– Crary, Weirich
- 2000
|
|
65
|
The Scheme Programming Language
– Dybvig
- 2003
|
|
63
|
A Semantic Model of Reference Counting and its Abstraction
– Hudak
- 1986
|
|
63
|
Automatic complexity analysis
– Rosendahl
|
|
59
|
Mechanical program analysis
– Wegbreit
- 1975
|
|
53
|
Automatic Average-Case Analysis of Algorithms
– Flajolet, Salvy, et al.
- 1991
|
|
51
|
On the false path problem in hard real-time programs
– Altenbernd
- 1996
|
|
51
|
Recursion and dynamic data structures in bounded space: towards embedded ML programming
– Hughes, Pareto
- 1999
|
|
48
|
Applying compiler techniques to cache behavior prediction
– Ferdinand, Martin, et al.
- 1997
|
|
43
|
Compile-time garbage collection by sharing analysis
– Jones, Metayer
|
|
43
|
Worst-case execution time analysis for modern hardware architectures
– Ottosson, Sjodin
- 1997
|
|
42
|
Scheduling Garbage Collection in Embedded Systems
– Henriksson
|
|
41
|
Ace: An automatic complexity evaluator
– Metayer
- 1988
|
|
40
|
The Analysis of Algorithms
– Purdom, Brown
- 1985
|
|
40
|
Complexity analysis for a lazy higher-order language
– Sands
|
|
32
|
Calculating sized types
– Chin, Khoo
- 2000
|
|
32
|
Automatic accurate time-bound analysis for high-level languages
– Liu, Gomez
- 1998
|
|
31
|
Effectiveness of trace sampling for performance debugging tools
– Martonosi, Gupta, et al.
- 1993
|
|
30
|
The aggregate update problem in functional programming systems
– Hudak, Bloss
- 1985
|
|
29
|
Analysis of functional programs to detect run-time garbage cells
– Inoue, Seki, et al.
- 1988
|
|
26
|
Static dependent costs for estimating execution time
– Reistad, Gifford
- 1994
|
|
23
|
Dynamic programming via static incrementalization
– Liu, Stoller
- 1999
|
|
19
|
Computer-assisted microanalysis of programs
– Cohen
- 1982
|
|
18
|
Copy elimination in functional languages
– Gopinath, Hennessy
- 1989
|
|
18
|
A backwards analysis for compile-time garbage collection
– Jensen, Mogensen
|
|
17
|
Order-of-evaluation analysis for destructive updates in strict functional languages with at aggregates
– Sastry, Clinger, et al.
- 1993
|
|
16
|
Resource bound certi
– Crary, Weirich
- 2000
|
|
16
|
The automatic complexity analysis of divide-and-conquer algorithms
– Zimmermann, Zimmermann
- 1991
|
|
15
|
Lambda-Upsilon-Omega: An assistant algorithms analyzer
– Flajolet, Salvy, et al.
- 1989
|
|
14
|
Compile-time garbage collection for higher-order functional languages
– Hughes
- 1992
|
|
13
|
Live memory analysis for garbage collection in embedded systems
– Persson
|
|
12
|
Automatic time-bound analysis for a higher-order language
– Gomez, Liu
- 1999
|
|
12
|
Set constraints for destructive array update optimization
– Wand, Clinger
- 1998
|
|
10
|
E ectiveness of trace sampling for performance debugging tools
– Martonosi, Gupta, et al.
- 1992
|
|
9
|
A powerful strategy for deriving efficient programs by transformation
– Pettorossi
- 1984
|
|
7
|
A powerful strategy for deriving ecient programs by transformation
– Pettorossi
- 1984
|
|
6
|
Compile-time garbage collection by necessity analysis
– Hamilton, Jones
- 1991
|