[ 
https://issues.apache.org/jira/browse/RNG-104?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16857129#comment-16857129
 ] 

Alex D Herbert commented on RNG-104:
------------------------------------

ThreadLocalRandom is using package private parts of Thread to store state. It 
is not possible to re-implement it. From browsing the source code it seems to 
me that a lot of work went into making it an extremely performant alternative 
to java.util.Random which uses an AtomicLong to have thread safe functionality.

I suppose the best attempt would be to use a 
ThreadLocal<UniformRandomProvider>. This is a generic way to replicate the 
functionality to have state associated with each thread. We recently added a 
ThreadLocalRandomSource class. I will add both this, java.util.Random and a 
dedicated ThreadLocal<UniformRandomProvider> to the benchmark to see how they 
compare.

> SeedFactory seed creation performance analysis
> ----------------------------------------------
>
>                 Key: RNG-104
>                 URL: https://issues.apache.org/jira/browse/RNG-104
>             Project: Commons RNG
>          Issue Type: Task
>          Components: simple
>    Affects Versions: 1.3
>            Reporter: Alex D Herbert
>            Assignee: Alex D Herbert
>            Priority: Minor
>
> The SeedFactory is used to create seeds for the random generators. To ensure 
> thread safety this uses synchronized blocks around a single generator. The 
> current method only generates a single int or long per synchronisation. 
> Analyze the performance of this approach. The analysis will investigate 
> generating multiple values inside each synchronisation around the generator.
> This analysis will also investigate methods to supplement the SeedFactory 
> with fast methods to create seeds. This will use a fast seeding method to 
> generate a single long value. This can be a seed for a SplitMix generator 
> used to create a seed of any length.
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to