Perfrewrite -- Program Complexity Analysis via Source Code Instrumentation
Michael Kruse (LRI, INRIA Saclay - Ile de France)

TL;DR
Perfrewrite is a novel LLVM-based tool that rewrites source code to track semantic information during execution, enabling estimation of a program's computational complexity class in big-O notation.
Contribution
It introduces a new source code instrumentation approach for deriving computational complexity formulas, which is uncommon in traditional profiling methods.
Findings
Successfully estimates memory and communication complexity during execution.
Provides a new method for deriving complexity formulas from source code.
Enables complexity analysis beyond simple execution time profiling.
Abstract
Most program profiling methods output the execution time of one specific program execution, but not its computational complexity class in terms of the big-O notation. Perfrewrite is a tool based on LLVM's Clang compiler to rewrite a program such that it tracks semantic information while the program executes and uses it to guess memory usage, communication and computational complexity. While source code instrumentation is a standard technique for profiling, using it for deriving formulas is an uncommon approach.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Advanced Data Storage Technologies · Software Engineering Research
