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/03/01 20:48:00 UTC
[jira] [Created] (RNG-76) Add a primitive constructor to SplitMix64
Alex D Herbert created RNG-76:
---------------------------------
Summary: Add a primitive constructor to SplitMix64
Key: RNG-76
URL: https://issues.apache.org/jira/browse/RNG-76
Project: Commons RNG
Issue Type: Improvement
Components: core
Affects Versions: 1.3
Reporter: Alex D Herbert
Assignee: Alex D Herbert
The constructor for {{SplitMix64}} uses a {{Long}} for the seed. If constructed using a primitive {{long}} then auto-boxing will occur.
I added a {{long}} version of the constructor to SplitMix64:
{code:java}
SplitMix64(Long seed);
SplitMix64(long seed);
{code}
I modified the {{ConstructionPerformance}} benchmark to generate 5000 random seeds as {{Long}} or {{long}} then tested:
{code:java}
// Pre-generated Long
new SplitMix64(Long seed);
// Pre-generated long that is boxed to Long
new SplitMix64(Long.valueOf(long seed));
// Pre-generated long
new SplitMix64(long seed);
{code}
Results:
||Method||Score||Error||Median||
|newSplitMix64Long|34.70|0.85|34.57|
|newSplitMix64LongValueOf|55.84|5.38|55.91|
|newSplitMix64long|32.66|1.49|32.46|
Given that the {{SplitMix64}} is the preferred RNG for seeding from a single {{long}} value it makes sense to add the constructor version that accepts a {{long}}.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)