The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Computer benchmarking: paths and pitfalls
IEEE Spectrum
The program dependence graph in static program testing
Information Processing Letters
Information Processing Letters
Determining average program execution times and their variance
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
Optimizing array bound checks using flow analysis
ACM Letters on Programming Languages and Systems (LOPLAS)
Accurate static estimators for program optimization
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Hybrid slicing: an approach for refining static slices using dynamic information
SIGSOFT '95 Proceedings of the 3rd ACM SIGSOFT symposium on Foundations of software engineering
Analysis of benchmark characteristics and benchmark performance prediction
ACM Transactions on Computer Systems (TOCS)
Proceedings of the 29th annual ACM/IEEE international symposium on Microarchitecture
Computation of Dynamic Program Slices for Unstructured Programs
IEEE Transactions on Software Engineering
System support for automatic profiling and optimization
Proceedings of the sixteenth ACM symposium on Operating systems principles
Data Flow Analysis in Software Reliability
ACM Computing Surveys (CSUR)
Operational Profiles in Software-Reliability Engineering
IEEE Software
IEEE Transactions on Software Engineering
Precise dynamic slicing algorithms
Proceedings of the 25th International Conference on Software Engineering
Redundant computation and its application in software performance analysis
Redundant computation and its application in software performance analysis
Application of the operational profile in software performance analysis
WOSP '04 Proceedings of the 4th international workshop on Software and performance
RCAT: A Performance Analysis Tool
Proceedings of the 19th IEEE international conference on Automated software engineering
Application of redundant computation in program debugging
Journal of Systems and Software
Hi-index | 0.03 |
Redundant computation is an execution of a program statement(s) that does not contribute to the program output. The same statement on one execution may exhibit redundant computation whereas on a different execution, it contributes to the program output. A redundant (dead) statement always exhibits redundant computation, i.e., its execution is always redundant. However, a statement that exhibits redundant computation is not necessarily a redundant statement. Redundant computation represents a partial redundancy of a statement. A high degree of redundant computation in a program may indicate a performance deficiency. Therefore, elimination (or reduction) of redundant computation may improve program's performance. In this paper we present an approach of automated detection of redundant computation in programs and show its application in performance analysis. We developed a tool that automatically detects redundant computations in C programs and identifies potential performance deficiencies related to redundant computation. We have performed an experimental study that showed that redundant computation is a commonly occurring phenomenon in programs, and it is frequently a source of performance deficiency.