[
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)