Skip to content

Commit 39f6970

Browse files
authored
bench: refactor random number generation in stats/base/dists/negative-binomial
PR-URL: #5193 Closes: #4980 Reviewed-by: Karan Anand <[email protected]>
1 parent 5186577 commit 39f6970

File tree

12 files changed

+290
-95
lines changed

12 files changed

+290
-95
lines changed

lib/node_modules/@stdlib/stats/base/dists/negative-binomial/cdf/benchmark/benchmark.js

+22-8
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@
2121
// MODULES //
2222

2323
var bench = require( '@stdlib/bench' );
24-
var ceil = require( '@stdlib/math/base/special/ceil' );
25-
var randu = require( '@stdlib/random/base/randu' );
24+
var discreteUniform = require( '@stdlib/random/base/discrete-uniform' );
25+
var uniform = require( '@stdlib/random/base/uniform' );
26+
var Float64Array = require( '@stdlib/array/float64' );
2627
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2728
var EPS = require( '@stdlib/constants/float64/eps' );
2829
var pkg = require( './../package.json' ).name;
@@ -32,18 +33,26 @@ var cdf = require( './../lib' );
3233
// MAIN //
3334

3435
bench( pkg, function benchmark( b ) {
36+
var len;
3537
var r;
3638
var p;
3739
var x;
3840
var y;
3941
var i;
4042

43+
len = 100;
44+
x = new Float64Array( len );
45+
r = new Float64Array( len );
46+
p = new Float64Array( len );
47+
for ( i = 0; i < len; i++ ) {
48+
x[ i ] = uniform( 0.0, 100.0 );
49+
r[ i ] = discreteUniform( 1, 100 );
50+
p[ i ] = uniform( EPS, 1.0 );
51+
}
52+
4153
b.tic();
4254
for ( i = 0; i < b.iterations; i++ ) {
43-
x = randu()*100.0;
44-
r = ceil( randu()*100.0 );
45-
p = ( randu()*1.0 ) + EPS;
46-
y = cdf( x, r, p );
55+
y = cdf( x[ i % len ], r[ i % len ], p[ i % len ] );
4756
if ( isnan( y ) ) {
4857
b.fail( 'should not return NaN' );
4958
}
@@ -58,6 +67,7 @@ bench( pkg, function benchmark( b ) {
5867

5968
bench( pkg+':factory', function benchmark( b ) {
6069
var mycdf;
70+
var len;
6171
var r;
6272
var p;
6373
var x;
@@ -67,11 +77,15 @@ bench( pkg+':factory', function benchmark( b ) {
6777
r = 80;
6878
p = 0.4;
6979
mycdf = cdf.factory( r, p );
80+
len = 100;
81+
x = new Float64Array( len );
82+
for ( i = 0; i < len; i++ ) {
83+
x[ i ] = uniform( 0.0, 100.0 );
84+
}
7085

7186
b.tic();
7287
for ( i = 0; i < b.iterations; i++ ) {
73-
x = ( randu()*100 );
74-
y = mycdf( x );
88+
y = mycdf( x[ i % len ] );
7589
if ( isnan( y ) ) {
7690
b.fail( 'should not return NaN' );
7791
}

0 commit comments

Comments
 (0)