[ https://issues.apache.org/jira/browse/RNG-57?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16689734#comment-16689734 ]
ASF GitHub Bot commented on RNG-57: ----------------------------------- GitHub user aherbert opened a pull request: https://github.com/apache/commons-rng/pull/12 RNG-57: Cache values for provision of nextBoolean and nextInt This PR contains the suggested changes to implement a cache to speed up the `nextInt` and `nextBoolean` methods in the core provider implementations. These changes improve performance but the effect on the `nextInt` method of `LongProvider` is unknown. A repeat of the DieHarder and TestU01 test suites is currently in progress. 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/12.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 #12 ---- commit 91a5eec2d8a3318cf8fc8e6d222ac3edf3a0d969 Author: aherbert <a.herbert@...> Date: 2018-11-16T13:10:51Z RNG-57: Cache values for provision of 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: core > Reporter: Alex D Herbert > Priority: Minor > Labels: performance > Fix For: 1.2 > > > 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)