Performance and evaluation of LISP systems
Performance and evaluation of LISP systems
Structure and interpretation of computer programs
Structure and interpretation of computer programs
The SCHEME programming language
The SCHEME programming language
ACE: an automatic complexity evaluator
ACM Transactions on Programming Languages and Systems (TOPLAS)
Reasoning About Time in Higher-Level Language Software
IEEE Transactions on Software Engineering
Machine Characterization Based on an Abstract High-Level Language Machine
IEEE Transactions on Computers
Complexity analysis for a lazy higher-order language
Proceedings of the third European symposium on programming on ESOP '90
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Experiments with a Program Timing Tool Based on Source-Level Timing Schema
Computer - Special issue on real-time systems
Automatic average-case analysis of algorithms
Theoretical Computer Science - Theme issue on the algebraic and computing treatment of noncommutative power series
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
Predicting program execution times by analyzing static and dynamic program paths
Real-Time Systems - Special issue: Real-time languages and language-level timing tools and analysis
Value dependence graphs: representation without taxation
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Static dependent costs for estimating execution time
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Systematic derivation of incremental programs
Science of Computer Programming
Analysis of benchmark characteristics and benchmark performance prediction
ACM Transactions on Computer Systems (TOCS)
Proving the correctness of reactive systems using sized types
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
Static caching for incremental computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Recursion and dynamic data-structures in bounded space: towards embedded ML programming
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
PEPM '00 Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Computer-assisted microanalysis of programs
Communications of the ACM
Communications of the ACM
Partial Evaluation and Mixed Computation: Proceedings of the IFIP TC2 Workshop, Gammel Avernaes, Denmark, 18-24 Oct., 1987
An Accurate Worst Case Timing Analysis for RISC Processors
IEEE Transactions on Software Engineering
Deriving Annotations for Tight Calculation of Execution Time
Euro-Par '97 Proceedings of the Third International Euro-Par Conference on Parallel Processing
Automatic Accurate Time-Bound Analysis for High-Level Languages
LCTES '98 Proceedings of the ACM SIGPLAN Workshop on Languages, Compilers, and Tools for Embedded Systems
Lambda - Upsilon - Omega: An Assistant Algorithms Analyzer
AAECC-6 Proceedings of the 6th International Conference, on Applied Algebra, Algebraic Algorithms and Error-Correcting Codes
Bounding Loop Iterations for Timing Analysis
RTAS '98 Proceedings of the Fourth IEEE Real-Time Technology and Applications Symposium
Performance specification of software components
SSR '01 Proceedings of the 2001 symposium on Software reusability: putting software reuse in context
Static prediction of heap space usage for first-order functional programs
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Optimized Live Heap Bound Analysis
VMCAI 2003 Proceedings of the 4th International Conference on Verification, Model Checking, and Abstract Interpretation
Performance analysis based upon complete profiles
Proceedings of the 2006 conference on Specification and verification of component-based systems
Removing useless variables in cost analysis of Java bytecode
Proceedings of the 2008 ACM symposium on Applied computing
Towards execution time estimation in abstract machine-based languages
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
Automatic Inference of Upper Bounds for Recurrence Relations in Cost Analysis
SAS '08 Proceedings of the 15th international symposium on Static Analysis
User-Definable Resource Usage Bounds Analysis for Java Bytecode
Electronic Notes in Theoretical Computer Science (ENTCS)
Cost analysis of java bytecode
ESOP'07 Proceedings of the 16th European conference on Programming
Closed-Form Upper Bounds in Static Cost Analysis
Journal of Automated Reasoning
Calculating polynomial runtime properties
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
Type-Based amortised heap-space analysis
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Automatic type inference for amortised heap-space analysis
ESOP'13 Proceedings of the 22nd European conference on Programming Languages and Systems
Hi-index | 0.00 |
Analysis of program running time is important for several applications, including reactive systems, interactive environments, compiler optimizations and performance evaluation. Automatic and efficient prediction of accurate time bounds is particularly important, and being able to do so for high-level languages is particularly desirable. This paper presents a general approach for automatic and accurate time-bound analysis for a functional high-level language, that combines methods and techniques studied in theory, languages, and systems. The approach consists of transformations for building time-bound functions in the presence of partially known input structures, symbolic evaluation of the time-bound function based on input parameters, optimizations to make the analysis efficient as well as accurate, and measurements of primitive parameters, all at the source-language level. To handle higher-order functions, special transformations are needed to build lambda expressions for computing running times, to optimize the construction of the time lambda expressions, and to optimize the symbolic evaluation. It took us several tries to obtain the simple and concise transformations for handling lambda expressions. We describe analysis and transformation algorithms and explain how they work. We have implemented this approach and performed a large number of experiments analyzing Scheme programs. The measured worst-case times are closely bounded by the calculated bounds. We describe our prototype system, ALPA, as well as the analysis and measurement results.