3 import java.util.Iterator;
\r
5 import com.ibm.wala.classLoader.IMethod;
\r
6 import com.ibm.wala.ipa.callgraph.AnalysisCache;
\r
7 import com.ibm.wala.ipa.callgraph.AnalysisOptions;
\r
8 import com.ibm.wala.ipa.callgraph.AnalysisScope;
\r
9 import com.ibm.wala.ipa.callgraph.CGNode;
\r
10 import com.ibm.wala.ipa.callgraph.CallGraph;
\r
11 import com.ibm.wala.ipa.callgraph.CallGraphBuilder;
\r
12 import com.ibm.wala.ipa.callgraph.Entrypoint;
\r
13 import com.ibm.wala.ipa.callgraph.impl.Util;
\r
14 import com.ibm.wala.ipa.cha.ClassHierarchy;
\r
15 import com.ibm.wala.util.config.AnalysisScopeReader;
\r
16 import com.ibm.wala.util.io.FileProvider;
\r
18 import demo.util.DemoUtil;
\r
19 import demo.util.MemoryInfo;
\r
21 public class ClassHierarchyPerformance {
\r
23 public static void main(String[] args) throws Exception {
\r
24 long start = System.currentTimeMillis();
\r
26 AnalysisScope scope = AnalysisScopeReader.makeJavaBinaryAnalysisScope(args[0], (new FileProvider()).getFile(DemoUtil.REGRESSION_EXCLUSIONS));
\r
27 ClassHierarchy cha = ClassHierarchy.make(scope);
\r
28 Iterable<Entrypoint> entrypoints = Util.makeMainEntrypoints(scope, cha);
\r
29 AnalysisOptions options = new AnalysisOptions(scope, entrypoints);
\r
30 CallGraphBuilder builder = Util.makeZeroCFABuilder(options, new AnalysisCache(), cha, scope);
\r
31 CallGraph cg = builder.makeCallGraph(options, null);
\r
32 for (CGNode caller: cg) {
\r
33 for (Iterator<CGNode> callees = cg.getSuccNodes(caller); callees.hasNext();) {
\r
34 CGNode callee = callees.next();
\r
35 IMethod callerMethod = caller.getMethod();
\r
36 IMethod calleeMethod = callee.getMethod();
\r
37 // System.out.println(callerMethod.toString() + " -> " + calleeMethod.toString());
\r
41 long end = System.currentTimeMillis();
\r
43 System.err.println((end - start) + " [ms]");
\r
44 System.err.println(MemoryInfo.getMemoryInfo());
\r