harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sian January" <sianjanu...@googlemail.com>
Subject Re: [jira] Commented: (HARMONY-5900) [classlib][pack200] CpBands.parseCpSignature(Ljava/io/InputStream;) is hot
Date Tue, 08 Jul 2008 09:30:30 GMT
The purpose of this code is to get the class constant pool ordering right,
so that if a signature string has already been transmitted in the CpUtf8
band it has the correct global index.  However it might be possible to do
the search a different way if this method is taking a long time.  E.g if I
get rid of the code that differentiates between signatures and other Ascii
values (i.e. replace all occurrences of
ClassConstantPool.DOMAIN_SIGNATUREASCIIZ
with ClassConstantPool.DOMAIN_NORMALASCIIZ) then my tests seem to pass,
although Andrew you wrote that code so it might be that I'm not testing all
the cases where this is needed.  Also there might be worse performance
implications from making that change, but I can attach a patch to the JIRA
if you would like to test it.



On 08/07/2008, Aleksey Shipilev (JIRA) <jira@apache.org> wrote:
>
>
>    [
> https://issues.apache.org/jira/browse/HARMONY-5900?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12611488#action_12611488]
>
> Aleksey Shipilev commented on HARMONY-5900:
> -------------------------------------------
>
> From my measurements for 20Mb .jar.pack.gz file on Sun JDK 1.6.0_05
> -server, CPBands.search accounts for 15% of CPU time.
> Let's move the discussion to dev.
>
> > [classlib][pack200] CpBands.parseCpSignature(Ljava/io/InputStream;) is
> hot
> >
> --------------------------------------------------------------------------
> >
> >                 Key: HARMONY-5900
> >                 URL: https://issues.apache.org/jira/browse/HARMONY-5900
> >             Project: Harmony
> >          Issue Type: Wish
> >          Components: Classlib
> >    Affects Versions: 5.0M6
> >         Environment: All Pack200 HEAD
> >            Reporter: Andrew Cornwall
> >
> > The method
> org/apache/harmony/unpack200/CpBands.parseCpSignature(Ljava/io/InputStream;)
> appears to be very hot. I tried initially to optimize it by caching some of
> its arrays:
> >     static void clearArrayCache() {
> >       arrayCache = new SegmentConstantPoolArrayCache();
> >     }
> >
> >     private static SegmentConstantPoolArrayCache arrayCache = new
> SegmentConstantPoolArrayCache();
> >
> >     private int search(String[] array, String string) {
> >       if(array.length > 30) {
> >               List indexes = arrayCache.indexesForArrayKey(array,
> string);
> >               if (indexes.size() == 0) {
> >                       return -1;
> >               }
> >               return ((Integer)indexes.get(0)).intValue();
> >       } else {
> >               for (int i = 0; i < array.length; i++) {
> >                       if(array[i].equals(string)) {
> >                               return i;
> >                       }
> >               }
> >               return -1;
> >       }
> >     }
> > ... but that didn't appear to increase performance. (Maybe all the
> searches are done once?)
> > Any ideas how to tune parseCpSignature to get it faster?
>
> --
> This message is automatically generated by JIRA.
> -
> You can reply to this email to add a comment to the issue online.
>
>


-- 
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number
741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message