[ https://issues.apache.org/jira/browse/RNG-57?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16636788#comment-16636788 ]
ASF GitHub Bot commented on RNG-57: ----------------------------------- GitHub user aherbert opened a pull request: https://github.com/apache/commons-rng/pull/11 RNG-57: Cache values for nextBoolean() and nextInt() AbstractIntProvider has been updated to cache a value for nextBoolean(). AbstractLongProvider has been updated to cache a value for nextBoolean() and nextInt(). You can merge this pull request into a Git repository by running: $ git pull https://github.com/aherbert/commons-rng improvement-RNG-57 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/commons-rng/pull/11.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #11 ---- commit 58afa68ebef161fa938c06ceed6bc324e8367e4a Author: aherbert <a.herbert@...> Date: 2018-10-03T10:54:37Z RNG-57: Cache values for nextBoolean() and nextInt() AbstractIntProvider has been updated to cache a value for nextBoolean(). AbstractLongProvider has been updated to cache a value for nextBoolean() and nextInt(). ---- > CachedUniformRandomProvider for nextBoolean() and nextInt() > ----------------------------------------------------------- > > Key: RNG-57 > URL: https://issues.apache.org/jira/browse/RNG-57 > Project: Commons RNG > Issue Type: Improvement > Components: sampling > Affects Versions: 1.2 > Reporter: Alex D Herbert > Priority: Minor > Labels: performance > > Implement a wrapper around a {{UniformRandomProvider}} that can cache the > underlying source of random bytes for use in the methods {{nextBoolean()}} > and {{nextInt()}} (in the case of {{LongProvider}}). E.g. > {code:java} > LongProvider provider = RandomSource.create(RandomSource.SPLIT_MIX_64); > CachedLongProvider rng = new CachedLongProvider(provider); > // Uses cached nextLong() 64 times > rng.nextBoolean(); > // Uses cached nextLong() twice > rng.nextInt(); > IntProvider provider = RandomSource.create(RandomSource.KISS); > CachedIntProvider rng2 = new CachedIntProvider(provider); > // Uses cached nextInt() 32 times > rng2.nextBoolean(); > // This could be wrapped by a factory method: > UniformRandomProvider rng = CachedUniformRandomProviderFactory.wrap( > // Any supported source: IntProvider or LongProvider > RandomSource.create(RandomSource...)); > {code} > The implementation should be speed tested to determine the benefit for > {{nextBoolean()}} and if {{nextInt()}} can be improved for {{LongProviders}}. -- This message was sent by Atlassian JIRA (v7.6.3#76005)