Results 1 -
3 of
3
Results from a Large-Scale Study of Performance Optimization Techniques for Source Code Analyses Based on Graph Reachability Algorithms
- In IEEE International Workshop on Source Code Analysis and Manipulation (SCAM 2003
, 2003
"... Internally, many source code analysis tools make use of graphs. For example, one of the oldest and most widely used internal graphs is the control-flow graph developed for use within a compiler. Work on compilation has also led to the development of the call graph, the procedure dependence graph (PD ..."
Abstract
-
Cited by 7 (5 self)
- Add to MetaCart
Internally, many source code analysis tools make use of graphs. For example, one of the oldest and most widely used internal graphs is the control-flow graph developed for use within a compiler. Work on compilation has also led to the development of the call graph, the procedure dependence graph (PDG), and the static-single assignment (SSA) graph. Compilers are not the only source-code analysis tools to use internal graphs. A variety of software engineering tools incorporate a variety of different graphs.
Empirical Study of Optimization Techniques for Massive Slicing
, 2007
"... This paper presents results from a study of techniques that improve the performance of graphbased interprocedural slicing of the System Dependence Graph (SDG). This is useful in “massive slicing ” where slices are required for many or all of the possible set of slicing criteria. Several different te ..."
Abstract
-
Cited by 5 (4 self)
- Add to MetaCart
This paper presents results from a study of techniques that improve the performance of graphbased interprocedural slicing of the System Dependence Graph (SDG). This is useful in “massive slicing ” where slices are required for many or all of the possible set of slicing criteria. Several different techniques are considered, including forming strongly connected components, topological sorting, and removing transitive edges. Data collected from a test bed of just over 1,000,000 lines of code are presented. This data illustrates the impact on computation time of the techniques. Together, the best combination produces a 71 % reduction in run-time (and a 64 % reduction in memory usage). The complete set of techniques also illustrates the point at which faster computation is not viable due to prohibitive preprocessing costs.
Predicate-Based Dynamic Slicing of Message Passing Programs
"... Program Slicing is a well-known decomposition technique that transforms a large program into a smaller one that contains only statements relevant to the computation of a selected function. In this paper, we present a novel predicate-based dynamic slicing algorithm for message passing programs. Unlik ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Program Slicing is a well-known decomposition technique that transforms a large program into a smaller one that contains only statements relevant to the computation of a selected function. In this paper, we present a novel predicate-based dynamic slicing algorithm for message passing programs. Unlike the more traditional slicing criteria that focus only on the parts of the program that influence a variable of interest at a specific position in the program, a predicate focuses on those parts of the program that influence the predicate. The dynamic predicate slice captures some global requirements or suspected error properties of a distributed program and computes all statements that are relevant. This article presents an algorithm and a sample computation to illustrate how the predicate slice can be computed. Additionally, we introduce a predicate trace to classify the relevance of statement executions based on the predicate slice. A compressed predicate trace can be used to reveal those instances of statement execution that turn the global predicate true, among others.

