[Soot-list] How to use soot as an effective command line bytecode optimizer

Chris Pickett chris.pickett at mail.mcgill.ca
Thu May 24 18:44:33 EDT 2007


Chris Pickett 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.

s/instruction stream/contained in Java class files./

> 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
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list


More information about the Soot-list mailing list