[Soot-list] How to use soot as an effective command line bytecode
optimizer
Mark Friedman
mark.friedman at gmail.com
Thu May 24 19:17:39 EDT 2007
In my case, my JVM doesn't have a JIT. That's why I'm interested in
compile/build time optimization for speed.
-Mark
On 5/24/07, Chris Pickett <chris.pickett at mail.mcgill.ca> wrote:
>
> If you are running the output program on a JVM with a JIT compiler,
> especially one of the commercial ones, then I think you are *probably*
> wasting your time trying to optimize for speed with Soot by modifying
> the bytecode instruction stream. Optimizing for space may work better.
>
> This might not always be the case, particularly if you perform an
> optimization that is orthogonal to what the JIT does.
>
> More importantly, if you have access to the source of a JIT compiler,
> you can probably do some heavy points-to and side-effect analysis with
> Soot and exploit that information at runtime quite profitably.
>
> Chris
>
> Mark Friedman wrote:
> > Thanks for all this. Perhaps I can get guidance from some folks who
> > have used soot as an optimizer for real applications or benchmarks.
> > Basically, it would be nice, as a first cut, to have sets of generally
> > known to be useful optimizations. This would be somewhat akin to gcc's
> > optimization flags. They have flags to control individual optimizations
> > as well as the more general -0, -02 and -03 flags which turn on batches
> > of them.
> >
> > -Mark
> >
> > On 5/24/07, *mbatch at cs.mcgill.ca <mailto:mbatch at cs.mcgill.ca>*
> > <mbatch at cs.mcgill.ca <mailto:mbatch at cs.mcgill.ca> > wrote:
> >
> > > The first is whether whole-program mode and whole-program
> > > optimization is 'safe', i.e. will whole-program optimizations
> produce
> > > incorrect code if it turns out that the program loads unknown
> files
> > > through reflection or other means.
> >
> > As far as I know there should be no issues with reflection when
> > using the
> > optimizations. Obfuscation is another beast altogether, though.
> >
> > > The second issue is some guidance on
> > > which analysis and optimization phases should be used for the
> most
> > > effective performance optimizations?
> >
> > While some optimizations are generally good, it is hard to clearly
> state
> > which ones are "worth it" to you and which ones aren't. There are
> more
> > trade-offs than just space-time.. an optimization may, for example,
> > make
> > 80% of your code run 2% faster but the other 20% of the code run 1%
> > slower...
> >
> > This is something you just have to investigate yourself if you're
> that
> > worried about it.
> >
> > > Finally, it's not clear to me which, if any,
> > > phases are executed by default and which ones must be turned on
> > > explicitly.
> >
> > Turn on verbose output and, bingo: It'll tell you what phases it is
> > running.
> >
> > Cheers,
> >
> > Michael Batchelder
> >
> > _______________________________________________
> > Soot-list mailing list
> > Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
> > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> >
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Soot-list mailing list
> > Soot-list at sable.mcgill.ca
> > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20070524/bf7aa705/attachment.htm
More information about the Soot-list
mailing list