You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Alex D Herbert (JIRA)" <ji...@apache.org> on 2019/02/18 23:01:00 UTC
[jira] [Created] (RNG-72) Create a RandomSource.create benchmark
Alex D Herbert created RNG-72:
---------------------------------
Summary: Create a RandomSource.create benchmark
Key: RNG-72
URL: https://issues.apache.org/jira/browse/RNG-72
Project: Commons RNG
Issue Type: New Feature
Components: simple
Affects Versions: 1.3
Reporter: Alex D Herbert
The recommended method to construct a {{UniformRandomProvider}} is to use, e.g.:
{code:java}
import org.apache.commons.rng.UniformRandomProvider;
import org.apache.commons.rng.simple.RandomSource;
UniformRandomProvider rng = RandomSource.create(RandomSource.MWC_256);
{code}
The factory method knows the type of seed required for the constructor and generates one as appropriate.
This factory method could be made more efficient, in particular:
* Reducing synchronisation around the single source of random seed data
* Adding knowledge of the required seed size for arrays
* Changing internal data structures, e.g. {{Map<Class<?>, SeedConverter<?,?>>}} can be changed to {{Map<SeedType, SeedConverter<?,?>>}} using an {{EnumMap}} if a new enum {{SeedType}} was created for all the supported seeds (currently 4 types).
* Add a new interface to replace {{SeedConverter<?,?>.convert()}} with a {{.convert(int outputArraySize)}} method to allow conversions to generate appropriately sized arrays. The parameter can be ignored for non-array conversions but could optimise array conversions.
This ticket is to add a JMH benchmark to compare the speed of construction of all the providers using:
* Their native constructor
* {{RandomSource}} using the native seed of the correct size (calls a constructor using reflection)
* {{RandomSource}} using a non native seed (requires seed conversion)
* {{RandomSource}} using no seed (requires seed generation)
The report will be posted here. It could be added to the user guide for reference.
This work is motivated by the new {{XorShiRo}} generators in version 1.3 that have a native array seed size of 2, 4, or 8. The current {{RandomSource}} create method will generate a fixed seed of length 128 for seeding.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)