[ 
https://issues.apache.org/jira/browse/LANG-511?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12727120#action_12727120
 ] 

Henri Yandell commented on LANG-511:
------------------------------------

Taglibs has a similar performance problem.

It seems that LANG-488 and this are at odds with each other. Does the set move 
into the get method, leading to synchronization on each call; or does every 
user of LocaleUtils pay for the setup for the other methods. 

I'm thinking... lazy loaded, with lazy loading methods looking like:

public Foo getFoo() {
    if(foo == null) {
        initFoo();
    }
    return foo;
}
public synchronized initFoo() {
    if(foo == null) {
        // do code to make an object for foo
    }
    return foo;
}

That should fix things for both complaints; while creating the complaint that 
the static initializer doesn't start things off :)

> Initialization of available locales in LocaleUtils can be deferred
> ------------------------------------------------------------------
>
>                 Key: LANG-511
>                 URL: https://issues.apache.org/jira/browse/LANG-511
>             Project: Commons Lang
>          Issue Type: Improvement
>    Affects Versions: 2.4
>            Reporter: Oliver Heger
>            Priority: Minor
>
> {{LocaleUtils}} has a static initializer block that initializes the list of 
> locales available in the system. This is done by calling 
> {{Locale.getAvailableLocales()}}.
> As I had to learn, {{getAvailableLocales()}} can be very expensive, depending 
> on the environment in which it is called. Obviously, all jars in the class 
> path are scanned to determine the supported locales. In our project we have a 
> large number of jars on the class path, and the invocation of the method 
> takes between 10 and 20 seconds. There is an entry in the Java Bug Database 
> related to this issue:
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4908648
> {{LocaleUtils}} contains some methods that do not need the list of available 
> locales (and in fact it is one of those methods we would like to use). So I 
> wonder whether the initialization of the list of available locales could be 
> done on demand. It would then have to be synchronized, but the advantage is 
> that the expensive initialization is only performed if it is actually 
> required.
> (LANG-488 is also related to this topic.)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to