<html><head></head><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px"><div id="yui_3_16_0_ym19_1_1460023453514_3978">Hi Simone,</div><div id="yui_3_16_0_ym19_1_1460023453514_3976"><br></div><div dir="ltr" id="yui_3_16_0_ym19_1_1460023453514_3977">I am aware of the options (e.g. the access path length) you use, my understanding is using these options will make Soot generate a non-precise call graph. I wanted to know if there are other options to improve performance that wouldn't require sacrificing the precision of the call graph.</div><div id="yui_3_16_0_ym19_1_1460023453514_4348" dir="ltr"><br></div><div id="yui_3_16_0_ym19_1_1460023453514_4349" dir="ltr">Thanks,</div><div id="yui_3_16_0_ym19_1_1460023453514_4350" dir="ltr">Enzo<br></div><div id="yui_3_16_0_ym19_1_1460023453514_3918"><span></span></div> <div class="qtdSeparateBR"><br><br></div><div style="display: block;" class="yahoo_quoted"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;"> <div dir="ltr"><font face="Arial" size="2"> On Thursday, April 7, 2016 8:48 AM, Simone Aonzo &lt;simone.aonzo@gmail.com&gt; wrote:<br></font></div>  <br><br> <div class="y_msg_container"><div id="yiv5168438696"><div>
    <br clear="none">
    Yes, I use FlowDroid.<br clear="none">
    The size of the apk is irrilevant, what matters is the size of the
    classes.dex<br clear="none">
    <br clear="none">
    With my configuration running on an Intel(R) Core(TM) i7-4810MQ CPU
    @ 2.80GHz:<br clear="none">
    small, 2,3MB, 30 sec<br clear="none">
    medium, 6,8MB,&nbsp; 1 minute<br clear="none">
    big, 11MB (whatsapp), 3 minutes<br clear="none">
    <br clear="none">
    </div><div>
    With the default configuration I've never seen it halting [but I
    can't say that it never halts, dear Turing :)] with the medium and
    the big dex, also after 7 hours.<br clear="none">
    <br clear="none">
    Keep in touch!<br clear="none">
    Simone<br clear="none">
    <br clear="none">
    <br clear="none">
    <div class="yiv5168438696yqt8719605932" id="yiv5168438696yqt99005"><div class="yiv5168438696moz-cite-prefix">On 06/04/2016 19:11, Denis Bogdanas
      wrote:<br clear="none">
    </div>
    <blockquote type="cite">
      <div dir="ltr">
        <div>
          <div>
            <div>
              <div>Interesting,<br clear="none">
              </div>
              I'm assuming you use FlowDroid. I'm also looking into good
              options for performance.<br clear="none">
              <br clear="none">
            </div>
            What size is the apk and how much faster are these settings
            compared to defaults?<br clear="none">
            <br clear="none">
          </div>
          thanks,<br clear="none">
        </div>
        Denis<br clear="none">
      </div>
      <div class="yiv5168438696gmail_extra"><br clear="none">
        <div class="yiv5168438696gmail_quote">On 6 April 2016 at 06:05, Simone Aonzo
          <span dir="ltr">&lt;<a rel="nofollow" shape="rect" ymailto="mailto:simone.aonzo@gmail.com" target="_blank" href="mailto:simone.aonzo@gmail.com">simone.aonzo@gmail.com</a>&gt;</span>
          wrote:<br clear="none">
          <blockquote class="yiv5168438696gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">This is
            the way I get a call graph in a reasonable time... if
            someone<br clear="none">
            has better ideas: share!<br clear="none">
            <br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp; soot.G.reset();<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp; SetupApplication setupApplication = new<br clear="none">
            SetupApplication(androidJar.toString(), apk.toString());<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp;
            setupApplication.getConfig().setFlowSensitiveAliasing(false);<br clear="none">
            // --aliasflowins<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp; setupApplication.getConfig().setAccessPathLength(1);
            // --aplength n<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp;
            setupApplication.getConfig().setEnableStaticFieldTracking(false);<br clear="none">
            // --nostatic<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp;
            setupApplication.getConfig().setEnableCallbacks(false);//
            --nocallbacks<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp;
setupApplication.getConfig().setPathBuilder(DefaultPathBuilderFactory.PathBuilder.ContextSensitive);//<br clear="none">
            --pathalgo<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp;
            setupApplication.getConfig().setComputeResultPaths(false);
            // --nopaths<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp;
            setupApplication.getConfig().setEnableExceptionTracking(false);<br clear="none">
            // --noexceptions<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp;
setupApplication.calculateSourcesSinksEntrypoints(sourcesAndSinks.toString());<br clear="none">
            <br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp; Options.v().set_src_prec(Options.src_prec_apk);<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp;
Options.v().set_soot_classpath("/usr/lib/jvm/java-8-oracle/jre/lib/rt.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jce.jar:.");<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp;
            Options.v().set_process_dir(Collections.singletonList(apk.toString()));<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp; Options.v().set_android_jars(androidJar.toString());<br clear="none">
            <br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp; List&lt;String&gt; excludeList = new
            LinkedList&lt;String&gt;();<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp; excludeList.add("java.");<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp; excludeList.add("sun.misc.");<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp; excludeList.add("android.");<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp; excludeList.add("org.apache.");<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp; excludeList.add("soot.");<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp; excludeList.add("javax.servlet.");<br clear="none">
            <br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp; Options.v().set_exclude(excludeList);<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp; Options.v().set_no_bodies_for_excluded(true);<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp;
            Options.v().set_output_format(Options.output_format_none);<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp; Options.v().set_allow_phantom_refs(true);<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp; Options.v().set_whole_program(true);<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp; Options.v().setPhaseOption("cg.spark", "on");<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp; Options.v().setPhaseOption("cg",
            "trim-clinit:false");<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp; SootMethod dummyMain =<br clear="none">
            setupApplication.getEntryPointCreator().createDummyMain();<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp;
            Options.v().set_main_class(dummyMain.getSignature());<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp;
            Scene.v().setEntryPoints(Collections.singletonList(dummyMain));<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp; PackManager.v().runPacks();<br clear="none">
            &nbsp; &nbsp; &nbsp; &nbsp; CallGraph callGraph = Scene.v().getCallGraph();<br clear="none">
            <br clear="none">
            2016-04-04 12:37 GMT+02:00 Enzo Lucky &lt;<a rel="nofollow" shape="rect" ymailto="mailto:luckenzo24@yahoo.com" target="_blank" href="mailto:luckenzo24@yahoo.com"></a><a rel="nofollow" shape="rect" class="yiv5168438696moz-txt-link-abbreviated" ymailto="mailto:luckenzo24@yahoo.com" target="_blank" href="mailto:luckenzo24@yahoo.com">luckenzo24@yahoo.com</a>&gt;:<br clear="none">
            &gt; Hi,<br clear="none">
            &gt;<br clear="none">
            &gt; I am using Soot to generate call graph of some Android
            apps, and I find Soot<br clear="none">
            &gt; take more than a day to generate the call graph for
            some apps. Can I do<br clear="none">
            &gt; anything other than the suggestions in the FlowDroid
            homepage<br clear="none">
            &gt; (<a rel="nofollow" shape="rect" target="_blank" href="https://github.com/secure-software-engineering/soot-infoflow-android/wiki#improving-performance">https://github.com/secure-software-engineering/soot-infoflow-android/wiki#improving-performance</a>)?<br clear="none">
            &gt; I want a precise call graph and hence, I didn't use any
            of the options.<br clear="none">
            &gt; Also, is the time normal or am I doing something wrong?
            Please find attached<br clear="none">
            &gt; my dummy main class.<br clear="none">
            &gt;<br clear="none">
            &gt; Thanks,<br clear="none">
            &gt; Enzo<br clear="none">
            &gt;<br clear="none">
            &gt; _______________________________________________<br clear="none">
            &gt; Soot-list mailing list<br clear="none">
            &gt; <a rel="nofollow" shape="rect" ymailto="mailto:Soot-list@CS.McGill.CA" target="_blank" href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a><br clear="none">
            &gt; <a rel="nofollow" shape="rect" target="_blank" href="https://mailman.cs.mcgill.ca/mailman/listinfo/soot-list">https://mailman.CS.McGill.CA/mailman/listinfo/soot-list</a><br clear="none">
            &gt;<br clear="none">
            _______________________________________________<br clear="none">
            Soot-list mailing list<br clear="none">
            <a rel="nofollow" shape="rect" ymailto="mailto:Soot-list@CS.McGill.CA" target="_blank" href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a><br clear="none">
            <a rel="nofollow" shape="rect" target="_blank" href="https://mailman.cs.mcgill.ca/mailman/listinfo/soot-list">https://mailman.CS.McGill.CA/mailman/listinfo/soot-list</a><br clear="none">
          </blockquote>
        </div>
        <br clear="none">
        <br clear="all">
        <br clear="none">
        -- <br clear="none">
        <div class="yiv5168438696gmail_signature">
          <div dir="ltr">Denis<br clear="none">
          </div>
        </div>
      </div>
    </blockquote></div>
    <br clear="none">
  </div></div><br><div class="yqt8719605932" id="yqt62553">_______________________________________________<br clear="none">Soot-list mailing list<br clear="none"><a shape="rect" ymailto="mailto:Soot-list@CS.McGill.CA" href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a><br clear="none"><a shape="rect" href="https://mailman.cs.mcgill.ca/mailman/listinfo/soot-list" target="_blank">https://mailman.CS.McGill.CA/mailman/listinfo/soot-list</a><br clear="none"></div><br><br></div>  </div> </div>  </div></div></body></html>