From: Steve H. <st...@we...> - 2012-12-07 18:09:09
|
Thanks for the tips. Avian used pro guard but had optimizations disabled because I was getting errors otherwise, I don't know if the xmlvm build used proguard because I used their build server for that one. I will check with Shai to see if they're using proguard and what the settings are. Steve On Friday, December 7, 2012, Jeff Palmer wrote: > Hi, > > Might it not help pre-running byte code through Proguard with the number > of optimization passes set to say 5? Some of these static accesses might > not even survive the process. The nice thing might be that xmlvm does not > have to change. Also you can check the the performance impact with or > without. > > On the blog, it said proguard was used for the Avian Port. This was for > size, but was the xmlvm version also pre-run through Proguard? > > Here is some output, pass 1, from a desktop application. Am noticing > that staticized methods is part of process, which might not be helpful > here. Do not know if it can be turned off. When Proguard is run against > an Android app, some optimizations are disabled, but not that one. > > [proguard] Ignoring unused library classes... > [proguard] Original number of library classes: 19088 > [proguard] Final number of library classes: 1048 > [proguard] Printing kept classes, fields, and methods... > ** Removed ** > [proguard] Shrinking... > [proguard] Removing unused program classes and class elements... > [proguard] Original number of program classes: 1219 > [proguard] Final number of program classes: 910 > [proguard] Inlining subroutines... > [proguard] Optimizing... > [proguard] Number of finalized classes: 462 > [proguard] Number of vertically merged classes: 8 > [proguard] Number of horizontally merged classes: 27 > [proguard] Number of removed write-only fields: 221 > [proguard] Number of privatized fields: 1467 > [proguard] Number of inlined constant fields: 58 > [proguard] Number of privatized methods: 773 > [proguard] Number of staticized methods: 199 > [proguard] Number of finalized methods: 6007 > [proguard] Number of removed method parameters: 281 > [proguard] Number of inlined constant parameters: 233 > [proguard] Number of inlined constant return values: 50 > [proguard] Number of inlined short method calls: 2348 > [proguard] Number of inlined unique method calls: 1573 > [proguard] Number of inlined tail recursion calls: 22 > [proguard] Number of merged code blocks: 138 > [proguard] Number of variable peephole optimizations: 8986 > [proguard] Number of arithmetic peephole optimizations: 258 > [proguard] Number of cast peephole optimizations: 251 > [proguard] Number of field peephole optimizations: 49 > [proguard] Number of branch peephole optimizations: 3766 > [proguard] Number of string peephole optimizations: 1148 > [proguard] Number of simplified instructions: 943 > [proguard] Number of removed instructions: 6557 > [proguard] Number of removed local variables: 1196 > [proguard] Number of removed exception blocks: 470 > [proguard] Number of optimized local variable frames: 3028 > [proguard] Shrinking... > [proguard] Removing unused program classes and class elements... > [proguard] Original number of program classes: 910 > [proguard] Final number of program classes: 869 > > > Jeff Palmer > WhatIf Squared LLC > > On Dec 6, 2012, at 8:53 PM, xml...@li...<javascript:_e({}, 'cvml', 'xml...@li...');>wrote: > > *From: *Arno Puder <ar...@pu... <javascript:_e({}, 'cvml', > 'ar...@pu...');>> > *Subject: **Re: [xmlvm-users] One small XMLVM benchmark* > *Date: *December 6, 2012 8:55:46 PM EST > *To: *Steve Hannah <st...@we... <javascript:_e({}, 'cvml', > 'st...@we...');>> > *Cc: *"xml...@li... <javascript:_e({}, 'cvml', > 'xml...@li...');>" <xml...@li...<javascript:_e({}, 'cvml', 'xml...@li...');> > > > > > > well, allow me some remarks. As you already alluded to, performance > testing is a tricky business. XMLVM cross-compiles to C code and by its > very nature it cannot do hot-patching at runtime. This means that every > static access to a class needs to check if that class was already > initialized. If your application is mainly using static fields and methods > (as did your original test case), XMLVM can't do many optimizations. > > XMLVM is far from being perfect, but it is doing a decent job. Mileage may > vary depending on the details of an app. It is always a good idea to try > different tools and pick the one that works best for you. > > Arno > > > -- Steve Hannah Web Lite Solutions Corp. |