You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ah...@apache.org on 2019/06/06 08:00:15 UTC
[commons-rng] 02/11: RNG-75: Limit use of the synchronized method
when creating array seeds.
This is an automated email from the ASF dual-hosted git repository.
aherbert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-rng.git
commit 190922b427e586e6e6a977ed292a914760cbc8bd
Author: Alex Herbert <ah...@apache.org>
AuthorDate: Wed May 29 22:01:55 2019 +0100
RNG-75: Limit use of the synchronized method when creating array seeds.
---
.../apache/commons/rng/simple/internal/ProviderBuilder.java | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ProviderBuilder.java b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ProviderBuilder.java
index 98c1c85..a3aa745 100644
--- a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ProviderBuilder.java
+++ b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ProviderBuilder.java
@@ -183,7 +183,9 @@ public final class ProviderBuilder {
INT_ARRAY {
@Override
public Object createSeed(int size) {
- return SeedFactory.createIntArray(size);
+ // Limit the number of calls to the synchronized method. The generator
+ // will support self-seeding.
+ return SeedFactory.createIntArray(Math.min(size, RANDOM_SEED_ARRAY_SIZE));
}
@Override
protected int[] convert(Integer seed, int size) {
@@ -210,7 +212,9 @@ public final class ProviderBuilder {
LONG_ARRAY {
@Override
public Object createSeed(int size) {
- return SeedFactory.createLongArray(size);
+ // Limit the number of calls to the synchronized method. The generator
+ // will support self-seeding.
+ return SeedFactory.createLongArray(Math.min(size, RANDOM_SEED_ARRAY_SIZE));
}
@Override
protected long[] convert(Integer seed, int size) {
@@ -234,6 +238,8 @@ public final class ProviderBuilder {
}
};
+ /** Maximum length of the seed array (for creating array seeds). */
+ private static final int RANDOM_SEED_ARRAY_SIZE = 128;
/** Convert {@code Long} to {@code Integer}. */
private static final Long2Int LONG_TO_INT = new Long2Int();
/** Convert {@code Integer} to {@code Long}. */