Skip to content

Commit 0341003

Browse files
anandkaranubcVinit-Pandit
authored andcommitted
bench: refactor random number generation in stats/base/dists/hypergeometric
PR-URL: stdlib-js#4955 Reviewed-by: Philipp Burckhardt <[email protected]>
1 parent 9aba49f commit 0341003

File tree

11 files changed

+305
-118
lines changed

11 files changed

+305
-118
lines changed

lib/node_modules/@stdlib/stats/base/dists/hypergeometric/cdf/benchmark/benchmark.js

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

2323
var bench = require( '@stdlib/bench' );
24-
var round = require( '@stdlib/math/base/special/round' );
25-
var randu = require( '@stdlib/random/base/randu' );
24+
var Float64Array = require( '@stdlib/array/float64' );
25+
var uniform = require( '@stdlib/random/base/uniform' );
26+
var discreteUniform = require( '@stdlib/random/base/discrete-uniform' );
2627
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2728
var pkg = require( './../package.json' ).name;
2829
var cdf = require( './../lib' );
@@ -31,20 +32,29 @@ var cdf = require( './../lib' );
3132
// MAIN //
3233

3334
bench( pkg, function benchmark( b ) {
35+
var len;
3436
var N;
3537
var K;
3638
var n;
3739
var x;
3840
var y;
3941
var i;
4042

43+
len = 100;
44+
x = new Float64Array( len );
45+
N = new Float64Array( len );
46+
K = new Float64Array( len );
47+
n = new Float64Array( len );
48+
for ( i = 0; i < len; i++ ) {
49+
x[ i ] = discreteUniform( 1, 50 );
50+
N[ i ] = discreteUniform( 1, 100 );
51+
K[ i ] = discreteUniform( 1, N[ i ] );
52+
n[ i ] = discreteUniform( 1, N[ i ] );
53+
}
54+
4155
b.tic();
4256
for ( i = 0; i < b.iterations; i++ ) {
43-
x = round( randu()*50.0 );
44-
N = round( randu()*100.0 );
45-
K = round( randu()*N );
46-
n = round( randu()*N );
47-
y = cdf( x, N, K, n );
57+
y = cdf( x[ i % len ], N[ i % len ], K[ i % len ], n[ i % len ] );
4858
if ( isnan( y ) ) {
4959
b.fail( 'should not return NaN' );
5060
}
@@ -59,22 +69,27 @@ bench( pkg, function benchmark( b ) {
5969

6070
bench( pkg+':factory', function benchmark( b ) {
6171
var mycdf;
72+
var len;
6273
var N;
6374
var K;
6475
var n;
6576
var x;
6677
var y;
6778
var i;
6879

69-
N = round( randu()*100.0 );
70-
K = round( randu()*N );
71-
n = round( randu()*N );
80+
len = 100;
81+
N = discreteUniform( 1, 100 );
82+
K = discreteUniform( 1, N );
83+
n = discreteUniform( 1, N );
7284
mycdf = cdf.factory( N, K, n );
85+
x = new Float64Array( len );
86+
for ( i = 0; i < len; i++ ) {
87+
x[ i ] = uniform( 0.0, 40.0 );
88+
}
7389

7490
b.tic();
7591
for ( i = 0; i < b.iterations; i++ ) {
76-
x = randu()*40.0;
77-
y = mycdf( x );
92+
y = mycdf( x[ i % len ] );
7893
if ( isnan( y ) ) {
7994
b.fail( 'should not return NaN' );
8095
}

0 commit comments

Comments
 (0)