Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
ACE: an automatic complexity evaluator
ACM Transactions on Programming Languages and Systems (TOPLAS)
Strictness analysis aids time analysis
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Cost analysis of logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Escape analysis for object-oriented languages: application to Java
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Communications of the ACM
Automatic discovery of linear restraints among variables of a program
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The Design and Analysis of Computer Algorithms
The Design and Analysis of Computer Algorithms
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
Inferring Argument Size Relationships with CLP(R)
LOPSTR '96 Proceedings of the 6th International Workshop on Logic Programming Synthesis and Transformation
Data Structures and Algorithms in Java
Data Structures and Algorithms in Java
Automated higher-order complexity analysis
Theoretical Computer Science - Implicit computational complexity
Abstraction carrying code and resource-awareness
PPDP '05 Proceedings of the 7th ACM SIGPLAN international conference on Principles and practice of declarative programming
Self-tuning resource aware specialisation for prolog
PPDP '05 Proceedings of the 7th ACM SIGPLAN international conference on Principles and practice of declarative programming
Science of Computer Programming - Special issue: Static analysis symposium (SAS 2003)
Certifying Polynomial Time and Linear/Polynomial Space for Imperative Programs
SIAM Journal on Computing
Field-sensitive value analysis of embedded C programs with union types and pointer arithmetics
Proceedings of the 2006 ACM SIGPLAN/SIGBED conference on Language, compilers, and tool support for embedded systems
Poly-controlled partial evaluation
Proceedings of the 8th ACM SIGPLAN international conference on Principles and practice of declarative programming
Termination analysis of logic programs through combination of type-based norms
ACM Transactions on Programming Languages and Systems (TOPLAS)
Experiments in Cost Analysis of Java Bytecode
Electronic Notes in Theoretical Computer Science (ENTCS)
Heap space analysis for java bytecode
Proceedings of the 6th international symposium on Memory management
The worst-case execution-time problem—overview of methods and survey of tools
ACM Transactions on Embedded Computing Systems (TECS)
Discovering properties about arrays in simple programs
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
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
Linear, Polynomial or Exponential? Complexity Inference in Polynomial Time
CiE '08 Proceedings of the 4th conference on Computability in Europe: Logic and Theory of Algorithms
Termination Analysis of Java Bytecode
FMOODS '08 Proceedings of the 10th IFIP WG 6.1 international conference on Formal Methods for Open Object-Based Distributed Systems
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
A Sound Floating-Point Polyhedra Abstract Domain
APLAS '08 Proceedings of the 6th Asian Symposium on Programming Languages and Systems
Field-Sensitive Value Analysis by Field-Insensitive Analysis
FM '09 Proceedings of the 2nd World Congress on Formal Methods
A termination analyzer for Java bytecode based on path-length
ACM Transactions on Programming Languages and Systems (TOPLAS)
Cost analysis of java bytecode
ESOP'07 Proceedings of the 16th European conference on Programming
User-definable resource bounds analysis for logic programs
ICLP'07 Proceedings of the 23rd international conference on Logic programming
Parametric inference of memory requirements for garbage collected languages
Proceedings of the 2010 international symposium on Memory management
Long-run cost analysis by approximation of linear operators over dioids
Mathematical Structures in Computer Science
From object fields to local variables: a practical approach to field-sensitive analysis
SAS'10 Proceedings of the 17th international conference on Static analysis
Automatic abstraction for intervals using Boolean formulae
SAS'10 Proceedings of the 17th international conference on Static analysis
Comparing cost functions in resource analysis
FOPARA'09 Proceedings of the First international conference on Foundational and practical aspects of resource analysis
Closed-Form Upper Bounds in Static Cost Analysis
Journal of Automated Reasoning
More precise yet widely applicable cost analysis
VMCAI'11 Proceedings of the 12th international conference on Verification, model checking, and abstract interpretation
Task-level analysis for a language with async/finish parallelism
Proceedings of the 2011 SIGPLAN/SIGBED conference on Languages, compilers and tools for embedded systems
Certified memory usage analysis
FM'05 Proceedings of the 2005 international conference on Formal Methods
Mobile resource guarantees for smart devices
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Enforcing resource bounds via static verification of dynamic checks
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
Detecting non-cyclicity by abstract compilation into boolean functions
VMCAI'06 Proceedings of the 7th international conference on Verification, Model Checking, and Abstract Interpretation
Pair-sharing analysis of object-oriented programs
SAS'05 Proceedings of the 12th international conference on Static Analysis
The flow of data and the complexity of algorithms
CiE'05 Proceedings of the First international conference on Computability in Europe: new Computational Paradigms
Incremental resource usage analysis
PEPM '12 Proceedings of the ACM SIGPLAN 2012 workshop on Partial evaluation and program manipulation
COSTABS: a cost and termination analyzer for ABS
PEPM '12 Proceedings of the ACM SIGPLAN 2012 workshop on Partial evaluation and program manipulation
Automatic inference of resource consumption bounds
LPAR'12 Proceedings of the 18th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
On the limits of the classical approach to cost analysis
SAS'12 Proceedings of the 19th international conference on Static Analysis
Reachability-based acyclicity analysis by Abstract Interpretation
Theoretical Computer Science
On the Inference of Resource Usage Upper and Lower Bounds
ACM Transactions on Computational Logic (TOCL)
Hi-index | 5.23 |
Cost analysis statically approximates the cost of programs in terms of their input data size. This paper presents, to the best of our knowledge, the first approach to the automatic cost analysis of object-oriented bytecode programs. In languages such as Java and C#, analyzing bytecode has a much wider application area than analyzing source code since the latter is often not available. Cost analysis in this context has to consider, among others, dynamic dispatch, jumps, the operand stack, and the heap. Our method takes a bytecode program and a cost model specifying the resource of interest, and generates cost relations which approximate the execution cost of the program with respect to such resource. We report on COSTA, an implementation for Java bytecode which can obtain upper bounds on cost for a large class of programs and complexity classes. Our basic techniques can be directly applied to infer cost relations for other object-oriented imperative languages, not necessarily in bytecode form.