Complexity analysis for a lazy higher-order language
Proceedings of the third European symposium on programming on ESOP '90
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
Cost analysis of logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Communications of the ACM
Parametric prediction of heap memory requirements
Proceedings of the 7th international symposium on Memory management
Analysing memory resource bounds for low-level programs
Proceedings of the 7th international symposium on Memory management
Automatic Inference of Upper Bounds for Recurrence Relations in Cost Analysis
SAS '08 Proceedings of the 15th international symposium on Static Analysis
SPEED: precise and efficient static estimation of program computational complexity
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
COSTA: Design and Implementation of a Cost and Termination Analyzer for Java Bytecode
Formal Methods for Components and Objects
Live heap space analysis for languages with garbage collection
Proceedings of the 2009 international symposium on Memory management
Cost analysis of java bytecode
ESOP'07 Proceedings of the 16th European conference on Programming
Memory usage verification for OO programs
SAS'05 Proceedings of the 12th international conference on Static Analysis
Automatic inference of resource consumption bounds
LPAR'12 Proceedings of the 18th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
Multivariate amortized resource analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.01 |
When describing the resource usage of a program, it is usual to talk in asymptotic terms, such as the well-known "big O" notation, whereby we focus on the behaviour of the program for large input data and make a rough approximation by considering as equivalent programs whose resource usage grows at the same rate. Motivated by the existence of non-asymptotic resource usage analyzers, in this paper, we develop a novel transformation from a non-asymptotic cost function (which can be produced by multiple resource analyzers) into its asymptotic form. Our transformation aims at producing tight asymptotic forms which do not contain redundant subexpressions (i.e., expressions asymptotically subsumed by others). Interestingly, we integrate our transformation at the heart of a cost analyzer to generate asymptotic upper bounds without having to first compute their non-asymptotic counterparts. Our experimental results show that, while non-asymptotic cost functions become very complex, their asymptotic forms are much more compact and manageable. This is essential to improve scalability and to enable the application of cost analysis in resource-aware verification/certification.