On Thu, Jun 03, 2004 at 12:46:22AM +0200, Helge Jensen wrote:My understanding based on CC03 paper (on SPARK) is that SPARK is used to calculate Points-to information and construct a precise call graph, if configured. So, when the below numbers indicate SPARK takes 140+ seconds, I am wondering if it's just to calculate points-to information (as in variable X points to M, N, and O abstract allocation objects) or is something more being calculated? If it's just points-to information then is there way of viewing points-to information to compare it with information generated from other points-to analysis implementation? Also, is there a way to view call graph information for purpose of comparison?
Helge Jensen wrote:
Helge Jensen wrote:I'm wondering about the performance of the Points-to analysis, do these timings (on a P4M-1700Mhz, 1G ram) seem reasonable to you?
What should I do? where is it described what I should do to stop the transitive traversal? any hints appreciated.
Yes, these are consistent with what I'm seeing.
I tend to run Spark with the class library from the 1.3.1 JDK, which in this case ends up running about 6 times faster. I'm not quite sure what it is about the 1.4 class library that takes so long.
Profiling the code, I see that over half the time is being spent resolving virtual method calls.
Ondrej
Analyzing the program "A.java":
public class A { public static void main(String[] args) { } }
I get the outputs:
$ java -Xmx400m soot.Main -w -p cg safe-forname:false -p cg.spark on,field-based:true -app A -src-prec java
Soot started on Thu Jun 03 00:34:26 CEST 2004
[Call Graph] For information on where the call graph may be incomplete, use the verbose option to the cg phase.
[Spark] Pointer Assignment Graph in 6.8 seconds.
[Spark] Type masks in 0.8 seconds.
[Spark] Pointer Graph simplified in 0.0 seconds.
[Spark] Propagation in 146.1 seconds.
[Spark] Solution found in 146.1 seconds.
Transforming A...
Soot finished on Thu Jun 03 00:37:05 CEST 2004
Soot has run for 2 min. 39 sec.
$ java -Xmx400m soot.Main -w -p cg.spark on -app A -src-prec java
Soot started on Thu Jun 03 00:40:30 CEST 2004
[Call Graph] For information on where the call graph may be incomplete, use the verbose option to the cg phase.
[Spark] Pointer Assignment Graph in 10.3 seconds.
[Spark] Type masks in 1.3 seconds.
[Spark] Pointer Graph simplified in 0.0 seconds.
[Spark] Propagation in 151.6 seconds.
[Spark] Solution found in 151.6 seconds.
Transforming A...
Soot finished on Thu Jun 03 00:43:24 CEST 2004
Soot has run for 2 min. 54 sec.
-- Helge
Venkatesh Prasad Ranganath, Dept. Computing and Information Science, Kansas State University, US. web: http://www.cis.ksu.edu/~rvprasad