[ 
https://issues.apache.org/jira/browse/MATH-1155?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Thomas Neidhart updated MATH-1155:
----------------------------------
    Attachment: MATH-1155.patch

Attached a patch to create static index tables for each WELL class random 
number generator.

Instead of having protected member fields in the AbstractWell base class, which 
need to be calculated for every instance, there is now a static IndexTable 
instance for each WELL class, containing the previous protected fields.

I was first thinking of applying a Initialization on Demand Holder Idiom to 
initialize the table only when the random generator is used, but the table 
initialization is not that costly, only when it is repeated again and again for 
each instance.

The IndexTable class is now package-private inside the AbstractWell class, 
which means users creating their own WELL implementation will not be able to 
use them, but I wonder if somebody did so? If needed, we can make it protected 
to support that.

> Speedup initialization of WellXXX rngs
> --------------------------------------
>
>                 Key: MATH-1155
>                 URL: https://issues.apache.org/jira/browse/MATH-1155
>             Project: Commons Math
>          Issue Type: Improvement
>    Affects Versions: 3.3
>            Reporter: Thomas Neidhart
>             Fix For: 4.0
>
>         Attachments: MATH-1155.patch
>
>
> As identified in MATH-1154, initialization of the WellXXX rngs is quite 
> costly as some internal arrays have to be computed.
> Most of these initializations are specific to the type of rng, e.g. 
> Well19937a and will not change afterwards, thus could be initialized in a 
> static way.
> Due to implementation details, i.e. the relevant fields are declared 
> protected in the base class AbstractWell, such a change would not be 
> backwards compatible and will have to be postponed to 4.0



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to