[Soot-list] Question about the performance of Call graph Construction in Spark

Yu Feng fengyu8299 at gmail.com
Sat Apr 26 02:00:30 EDT 2014


Hi,

I am generating two call graphs using Spark.
One is CHA-based(on-fly-cg:false) and another is on-the-fly (on-fly-cg:true)

Two things I don't quite understand:
1. If i didn't analyze the Java library, the performance of those two is
very closed and actually the on-the-fly version is even more faster, which
is a bit counterintuitive to me.
soot.Main.v().run(new String[] {
"-W",
"-process-dir", targetLoc,
"-src-prec", "class",
"-allow-phantom-refs",
"-no-bodies-for-excluded",
"-exclude", "java",
"-exclude", "javax",
"-output-format", "none"
} );
Spark setting:
opt.put("enabled","true");
opt.put("verbose","true");
opt.put("field-based","false");
* opt.put("on-fly-cg","false");       ** (**on-fly-cg: **true)    *

opt.put("set-impl","double");
opt.put("double-set-old","hybrid");
opt.put("double-set-new","hybrid");

2. If i analyzed the Java library, their performance is still closed, while
the CHA-based version spends more time on initiating the PAG(Pointer
assignment graph) and the on-the-fly version spends more time on
propagation. But the overall time(Generating call graph + PAG) looks closed.

soot.Main.v().run(new String[] {
"-W",
"-process-dir", targetLoc,
"-src-prec", "class",
"-allow-phantom-refs",
"-output-format", "none"
} );
Spark setting:
opt.put("enabled","true");
opt.put("verbose","true");
opt.put("field-based","false");
* opt.put("on-fly-cg","false");    (**on-fly-cg: **true)                *
opt.put("set-impl","double");
opt.put("double-set-old","hybrid");
opt.put("double-set-new","hybrid");

Is there any problem in my setting?
Since my expectation is to get a much faster(But imprecise) CHA-based Call
graph(and PAG) and a slower(but more precise) on-the-fly call graph but
obviously something sounds incorrect.

Another question is, if i ask Soot to analyze the Java library without
providing the corresponding models, what is the default behavior? I
observed that Soot will generate the CoffiMethod for each class in the
library which take quite a lot of time and I don't think those will be used
in the following analyses like call graph construction and PAG builder?

Thanks,
Yu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20140426/cf96c192/attachment.html 


More information about the Soot-list mailing list