Re: Small performance change

Anthony Eden <[email protected]> Fri, 07 Mar 2003 12:07:12 -0500
Newsgroups gmane.comp.java.jpublish.devel
Message-ID <[email protected]>
I have commited the change.  Please let me know if you find any additional bottlenecks.

Sincerely,
Anthony Eden

David E Jones wrote:
> Anthony,
> 
> Yes, the performance hit is pretty big. My profiling timings put the running 
> of that method at around 1ms. This on its own is not huge, but does result in 
> some cases in OFBiz ecommerce pages the increase of about 10ms of unnecessary 
> time.
> 
> I was looking for this sort of thing last night in the OFBiz code and noticed 
> this one here in JPublish. I'll be looking in more detail at JPublish and 
> other projects over the next few days to find other similar things. A few 
> milliseconds here and there could result in dropping the total page load time 
> by a couple of hundred milliseconds, which is what I am going for.
> 
> Later,
> -David
> 
> 
> On Friday 07 March 2003 06:50, Anthony Eden wrote:
> 
>>The idea of having a map of classes was to support the addition of new URI
>>types without having to change the code.  However if you are showing a
>>significant performance hit because of it I will modify the code to match
>>your patch.
>>
>>-Anthony
>>
>>David E Jones wrote:
>>
>>>This method is called quite a few times, to the point where it is a
>>>noticeable amount. It doesn't look like the dynamic new instance is
>>>necessary, and a new is much faster, so attached is an alternative.
>>>
>>>Later,
>>>-David Jones
>>>
>>>
>>>------------------------------------------------------------------------
>>>
>>>package org.jpublish.util;
>>>
>>>import java.util.HashMap;
>>>
>>>public class InternalURIParser{
>>>
>>>    private static final InternalURIParser INSTANCE = new
>>>InternalURIParser(); //private HashMap uriClasses;
>>>
>>>    protected InternalURIParser(){
>>>        //uriClasses = new HashMap();
>>>        //uriClasses.put("template", InternalURI.class);
>>>        //uriClasses.put("repository", RepositoryURI.class);
>>>    }
>>>
>>>    public static InternalURIParser getInstance(){
>>>        return INSTANCE;
>>>    }
>>>
>>>    public InternalURI parse(String uriString) throws Exception{
>>>        int protocolTerminatorIndex = uriString.indexOf(":");
>>>        if(protocolTerminatorIndex <= 0){
>>>            throw new IllegalArgumentException("URI string is not a valid
>>>URI"); }
>>>
>>>        String protocol = uriString.substring(0,
>>>protocolTerminatorIndex); //Class uriClass =
>>>(Class)uriClasses.get(protocol);
>>>        //InternalURI uri = (InternalURI)uriClass.newInstance();
>>>        InternalURI uri = null;
>>>        if ("template".equals(protocol)) {
>>>            uri = new InternalURI();
>>>        } else if ("repository".equals(protocol)) {
>>>            uri = new RepositoryURI();
>>>        } else {
>>>            return null;
>>>        }
>>>        uri.setURI(uriString);
>>>        return uri;
>>>    }
>>>
>>>}
>>
>>-------------------------------------------------------
>>This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger
>>for complex code. Debugging C/C++ programs can leave you feeling lost and
>>disoriented. TotalView can help you find your way. Available on major UNIX
>>and Linux platforms. Try it free. www.etnus.com
>>_______________________________________________
>>Jpublish-developer mailing list
>>[email protected]
>>https://lists.sourceforge.net/lists/listinfo/jpublish-developer
> 
> 
> 
> 
> -------------------------------------------------------
> This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger 
> for complex code. Debugging C/C++ programs can leave you feeling lost and 
> disoriented. TotalView can help you find your way. Available on major UNIX 
> and Linux platforms. Try it free. www.etnus.com
> _______________________________________________
> Jpublish-developer mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/jpublish-developer



-------------------------------------------------------
This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger 
for complex code. Debugging C/C++ programs can leave you feeling lost and 
disoriented. TotalView can help you find your way. Available on major UNIX 
and Linux platforms. Try it free. www.etnus.com