[ 
http://issues.apache.org/jira/browse/AXIS-2597?page=comments#action_12457017 ] 
            
Elwin Ho commented on AXIS-2597:
--------------------------------

It takes around 1500 ms to generate 10 ids. It is way to slow to use compare to 
  (java.rmi.server.UID only take 3 ms for 10 ids) 
Env.
PM 1.8 hz. 
Java 1.4
2G memory.



    long elwin_startTime = System.currentTimeMillis();

        for (int i=0; i<10; i ++)
        {
            suuidg.nextUUID();
        }
        System.out.println("take "
                                          + 
((System.currentTimeMillis()-elwin_startTime))
                                          + " ms");
        
        

> CLONE -SimpleUUIDGen.nextUUID() is very, very, very slow
> --------------------------------------------------------
>
>                 Key: AXIS-2597
>                 URL: http://issues.apache.org/jira/browse/AXIS-2597
>             Project: Apache Axis
>          Issue Type: Bug
>    Affects Versions: 1.1
>         Environment: Any
>            Reporter: Elwin Ho
>
> It takes .4917 seconds to generate just one UUID.  (Yes, seconds.)  This 
> renders the feature very nearly useless.
> In SimpleUUIDGen, there is a simple, but very expensive, bug..  It creates a 
> new instance of SecureRandom on each call to nextUUID().  Making a new 
> instance of SecureRandom is very expensive because it has to set up the 
> environment for producing cryptographically strong random numbers.
> The instance of SecureRandom should be in a static variable and init'ed just 
> once.  Then, you call getNextLong() when you want another number from it.  It 
> would be much faster that way without compromising the integrity of the UUIDs 
> generated.
> BTW, If you look at the comment I copied from the code, it appears that this 
> is what the developer meant to make the SecureRandom instance static, but 
> forgot.
>     /**
>      * Creates a new UUID. The algorithm used is described by The Open Group.
>      * See <a href="http://www.opengroup.org/onlinepubs/009629399/apdxa.htm";>
>      * Universal Unique Identifier</a> for more details.
>      * <p>
>      * Due to a lack of functionality in Java, a part of the UUID is a secure
>      * random. This results in a long processing time when this method is 
> called
>      * for the first time.
>      */
> Here's a proposed fix.  In the member variables, add the following.
>     private static Random secureRandom = null;
>     static {
>         try {
>             secureRandom = SecureRandom.getInstance("SHA1PRNG", "SUN");
>         } catch (Exception e) {
>             secureRandom = new Random();
>         }
>     }
> The, remove the code near line 235 where the SecureRandom is being created.  
> This change should do it just once.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to