Skip to content

Commit af55f0d

Browse files
bench: refactor random number generation in stats/base/dists/binomial
PR-URL: #4841 Reviewed-by: Athan Reines <[email protected]>
1 parent 9394549 commit af55f0d

File tree

16 files changed

+318
-115
lines changed

16 files changed

+318
-115
lines changed

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

Lines changed: 22 additions & 8 deletions
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 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,18 +32,26 @@ var cdf = require( './../lib' );
3132
// MAIN //
3233

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

42+
len = 100;
43+
x = new Float64Array( len );
44+
n = new Float64Array( len );
45+
p = new Float64Array( len );
46+
for ( i = 0; i < len; i++ ) {
47+
x[ i ] = uniform( 0.0, 100.0 );
48+
n[ i ] = discreteUniform( 1, 100 );
49+
p[ i ] = uniform( 0.0, 1.0 );
50+
}
51+
4052
b.tic();
4153
for ( i = 0; i < b.iterations; i++ ) {
42-
x = randu() * 100.0;
43-
n = ceil( randu()*100.0 );
44-
p = randu();
45-
y = cdf( x, n, p );
54+
y = cdf( x[ i % len ], n[ i % len ], p[ i % len ] );
4655
if ( isnan( y ) ) {
4756
b.fail( 'should not return NaN' );
4857
}
@@ -57,6 +66,7 @@ bench( pkg, function benchmark( b ) {
5766

5867
bench( pkg+':factory', function benchmark( b ) {
5968
var mycdf;
69+
var len;
6070
var n;
6171
var p;
6272
var x;
@@ -66,11 +76,15 @@ bench( pkg+':factory', function benchmark( b ) {
6676
n = 80;
6777
p = 0.4;
6878
mycdf = cdf.factory( n, p );
79+
len = 100;
80+
x = new Float64Array( len );
81+
for ( i = 0; i < len; i++ ) {
82+
x[ i ] = uniform( 0.0, 80.0 );
83+
}
6984

7085
b.tic();
7186
for ( i = 0; i < b.iterations; i++ ) {
72-
x = randu() * 80.0;
73-
y = mycdf( x );
87+
y = mycdf( x[ i % len ] );
7488
if ( isnan( y ) ) {
7589
b.fail( 'should not return NaN' );
7690
}

0 commit comments

Comments
 (0)