You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Sian January (JIRA)" <ji...@apache.org> on 2008/07/11 10:11:31 UTC

[jira] Resolved: (HARMONY-5900) [classlib][pack200] CpBands.parseCpSignature(Ljava/io/InputStream;) is hot

     [ https://issues.apache.org/jira/browse/HARMONY-5900?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Sian January resolved HARMONY-5900.
-----------------------------------

       Resolution: Fixed
    Fix Version/s: 5.0M7

Resolved at r675616.

> [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
>             Fix For: 5.0M7
>
>         Attachments: pack200-noSearchForSignatures.patch, pack200-stringlookup-v1.patch, pack200-stringlookup-v1.patch, unified-stringlookup-noSearchForSignatures.patch
>
>
> 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.