[
https://issues.apache.org/jira/browse/MATH-642?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Phil Steitz resolved MATH-642.
------------------------------
Resolution: Fixed
Trivially adapted version of Harmony implementation committed in r1154815.
> Performance of nextInt(int) in BitsStreamGenerator can be improved
> ------------------------------------------------------------------
>
> Key: MATH-642
> URL: https://issues.apache.org/jira/browse/MATH-642
> Project: Commons Math
> Issue Type: Improvement
> Affects Versions: 2.0, 2.1, 2.2
> Reporter: Phil Steitz
> Priority: Minor
> Fix For: 3.0
>
> Attachments: microbenchmarks.txt
>
>
> The code used to implement this method in Apache Harmony's Random class
> performs better with the Mersenne and Well generators as bit sources as well
> as the JDK generator. Here are some benchmark testing results ("orginal" is
> the current code):
> nextInt(10) comparison - JDK generator (runs per timed block: 100000, timed
> blocks: 1000)
> original value = 10: 5.417883e-05 (1.010215e-05) ms
> harmony value = 10: 3.808923e-05 (1.090630e-05) ms
> nextInt(100) comparison - JDK generator (runs per timed block: 100000, timed
> blocks: 1000)
> original value = 100: 4.602311e-05 (5.075280e-06) ms
> harmony value = 100: 3.771343e-05 (5.836102e-06) ms
> nextInt(10000) comparison - JDK generator (runs per timed block: 100000,
> timed blocks: 1000)
> original value = 10000: 5.317242e-05 (5.527069e-06) ms
> harmony value = 10000: 3.676283e-05 (5.062836e-06) ms
> nextInt(32) comparison - JDK generator (runs per timed block: 100000, timed
> blocks: 1000)
> original value = 32: 6.225222e-05 (1.143497e-05) ms
> harmony value = 32: 3.875278e-05 (6.099984e-06) ms
> nextInt(10) comparison - Well1024a (runs per timed block: 100000, timed
> blocks: 1000)
> original value = 10: 4.365601e-05 (1.013942e-05) ms
> harmony value = 10: 4.141704e-05 (1.778676e-05) ms
> nextInt(100) comparison - Well1024a (runs per timed block: 100000, timed
> blocks: 1000)
> original value = 100: 3.579893e-05 (4.670346e-06) ms
> harmony value = 100: 3.474323e-05 (5.273507e-06) ms
> nextInt(10000) comparison - Well1024a (runs per timed block: 100000, timed
> blocks: 1000)
> original value = 10000: 4.431216e-05 (5.654163e-06) ms
> harmony value = 10000: 3.440765e-05 (4.282874e-06) ms
> nextInt(32) comparison - Well1024a (runs per timed block: 100000, timed
> blocks: 1000)
> original value = 32: 5.080220e-05 (7.276901e-06) ms
> harmony value = 32: 2.958944e-05 (1.091995e-05) ms
> nextInt(10) comparison - MersenneTwister (runs per timed block: 100000, timed
> blocks: 1000)
> original value = 10: 4.365044e-05 (1.284578e-05) ms
> harmony value = 10: 3.199023e-05 (7.170367e-06) ms
> nextInt(100) comparison - MersenneTwister (runs per timed block: 100000,
> timed blocks: 1000)
> original value = 100: 3.488505e-05 (4.822188e-06) ms
> harmony value = 100: 3.145389e-05 (5.290716e-06) ms
> nextInt(10000) comparison - MersenneTwister (runs per timed block: 100000,
> timed blocks: 1000)
> original value = 10000: 4.468017e-05 (1.086927e-05) ms
> harmony value = 10000: 3.274545e-05 (2.059499e-05) ms
> nextInt(32) comparison - MersenneTwister (runs per timed block: 100000, timed
> blocks: 1000)
> original value = 32: 5.129467e-05 (6.652250e-06) ms
> harmony value = 32: 2.569880e-05 (8.063487e-06) ms
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira