Skip to content

Commit a08266d

Browse files
anandkaranubcShabiShett07
authored andcommitted
bench: refactor random number generation in stats/base/dists/arcsine
PR-URL: stdlib-js#4798 Reviewed-by: Athan Reines <[email protected]>
1 parent adcf747 commit a08266d

File tree

13 files changed

+257
-72
lines changed

13 files changed

+257
-72
lines changed

lib/node_modules/@stdlib/stats/base/dists/arcsine/ctor/benchmark/benchmark.js

+119-26
Large diffs are not rendered by default.

lib/node_modules/@stdlib/stats/base/dists/arcsine/logcdf/benchmark/benchmark.js

+20-6
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
// MODULES //
2222

2323
var bench = require( '@stdlib/bench' );
24+
var Float64Array = require( '@stdlib/array/float64' );
2425
var uniform = require( '@stdlib/random/base/uniform' );
2526
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2627
var pkg = require( './../package.json' ).name;
@@ -32,16 +33,24 @@ var logcdf = require( './../lib' );
3233
bench( pkg, function benchmark( b ) {
3334
var min;
3435
var max;
36+
var len;
3537
var x;
3638
var y;
3739
var i;
3840

41+
len = 100;
42+
x = new Float64Array( len );
43+
min = new Float64Array( len );
44+
max = new Float64Array( len );
45+
for ( i = 0; i < len; i++ ) {
46+
x[ i ] = uniform( -10.0, 10.0 );
47+
min[ i ] = uniform( -20.0, 0.0 );
48+
max[ i ] = uniform( min[ i ], min[ i ] + 40.0 );
49+
}
50+
3951
b.tic();
4052
for ( i = 0; i < b.iterations; i++ ) {
41-
x = uniform( -10.0, 10.0 );
42-
min = uniform( -20.0, 0.0 );
43-
max = uniform( min, min + 40.0 );
44-
y = logcdf( x, min, max );
53+
y = logcdf( x[ i % len ], min[ i % len ], max[ i % len ] );
4554
if ( isnan( y ) ) {
4655
b.fail( 'should not return NaN' );
4756
}
@@ -58,18 +67,23 @@ bench( pkg+':factory', function benchmark( b ) {
5867
var mylogcdf;
5968
var min;
6069
var max;
70+
var len;
6171
var x;
6272
var y;
6373
var i;
6474

6575
min = -1.5;
6676
max = 1.5;
6777
mylogcdf = logcdf.factory( min, max );
78+
len = 100;
79+
x = new Float64Array( len );
80+
for ( i = 0; i < len; i++ ) {
81+
x[ i ] = uniform( -2.0, 0.0 );
82+
}
6883

6984
b.tic();
7085
for ( i = 0; i < b.iterations; i++ ) {
71-
x = uniform( -2.0, 0.0 );
72-
y = mylogcdf( x );
86+
y = mylogcdf( x[ i % len ] );
7387
if ( isnan( y ) ) {
7488
b.fail( 'should not return NaN' );
7589
}

lib/node_modules/@stdlib/stats/base/dists/arcsine/logpdf/benchmark/benchmark.js

+20-6
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
// MODULES //
2222

2323
var bench = require( '@stdlib/bench' );
24+
var Float64Array = require( '@stdlib/array/float64' );
2425
var uniform = require( '@stdlib/random/base/uniform' );
2526
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2627
var pkg = require( './../package.json' ).name;
@@ -32,16 +33,24 @@ var logpdf = require( './../lib' );
3233
bench( pkg, function benchmark( b ) {
3334
var min;
3435
var max;
36+
var len;
3537
var x;
3638
var y;
3739
var i;
3840

41+
len = 100;
42+
x = new Float64Array( len );
43+
min = new Float64Array( len );
44+
max = new Float64Array( len );
45+
for ( i = 0; i < len; i++ ) {
46+
x[ i ] = uniform( -10.0, 10.0 );
47+
min[ i ] = uniform( -20.0, 0.0 );
48+
max[ i ] = uniform( min[ i ], min[ i ] + 40.0 );
49+
}
50+
3951
b.tic();
4052
for ( i = 0; i < b.iterations; i++ ) {
41-
x = uniform( -10.0, 10.0 );
42-
min = uniform( -20.0, 0.0 );
43-
max = uniform( min, min + 40.0 );
44-
y = logpdf( x, min, max );
53+
y = logpdf( x[ i % len ], min[ i % len ], max[ i % len ] );
4554
if ( isnan( y ) ) {
4655
b.fail( 'should not return NaN' );
4756
}
@@ -58,18 +67,23 @@ bench( pkg+':factory', function benchmark( b ) {
5867
var mylogpdf;
5968
var min;
6069
var max;
70+
var len;
6171
var x;
6272
var y;
6373
var i;
6474

6575
min = -1.5;
6676
max = 1.5;
6777
mylogpdf = logpdf.factory( min, max );
78+
len = 100;
79+
x = new Float64Array( len );
80+
for ( i = 0; i < len; i++ ) {
81+
x[ i ] = uniform( -2.0, 0.0 );
82+
}
6883

6984
b.tic();
7085
for ( i = 0; i < b.iterations; i++ ) {
71-
x = uniform( -2.0, 0.0 );
72-
y = mylogpdf( x );
86+
y = mylogpdf( x[ i % len ] );
7387
if ( isnan( y ) ) {
7488
b.fail( 'should not return NaN' );
7589
}

lib/node_modules/@stdlib/stats/base/dists/arcsine/mean/benchmark/benchmark.js

+11-3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
// MODULES //
2222

2323
var bench = require( '@stdlib/bench' );
24+
var Float64Array = require( '@stdlib/array/float64' );
2425
var uniform = require( '@stdlib/random/base/uniform' );
2526
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2627
var pkg = require( './../package.json' ).name;
@@ -32,14 +33,21 @@ var mean = require( './../lib' );
3233
bench( pkg, function benchmark( b ) {
3334
var min;
3435
var max;
36+
var len;
3537
var y;
3638
var i;
3739

40+
len = 100;
41+
min = new Float64Array( len );
42+
max = new Float64Array( len );
43+
for ( i = 0; i < len; i++ ) {
44+
min[ i ] = uniform( 0.0, 10.0 );
45+
max[ i ] = uniform( min[ i ], min[ i ] + 10.0 );
46+
}
47+
3848
b.tic();
3949
for ( i = 0; i < b.iterations; i++ ) {
40-
min = uniform( 0.0, 10.0 );
41-
max = uniform( min, min + 10.0 );
42-
y = mean( min, max );
50+
y = mean( min[ i % len ], max[ i % len ] );
4351
if ( isnan( y ) ) {
4452
b.fail( 'should not return NaN' );
4553
}

lib/node_modules/@stdlib/stats/base/dists/arcsine/median/benchmark/benchmark.js

+11-3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
// MODULES //
2222

2323
var bench = require( '@stdlib/bench' );
24+
var Float64Array = require( '@stdlib/array/float64' );
2425
var uniform = require( '@stdlib/random/base/uniform' );
2526
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2627
var pkg = require( './../package.json' ).name;
@@ -32,14 +33,21 @@ var median = require( './../lib' );
3233
bench( pkg, function benchmark( b ) {
3334
var min;
3435
var max;
36+
var len;
3537
var y;
3638
var i;
3739

40+
len = 100;
41+
min = new Float64Array( len );
42+
max = new Float64Array( len );
43+
for ( i = 0; i < len; i++ ) {
44+
min[ i ] = uniform( 0.0, 10.0 );
45+
max[ i ] = uniform( min[ i ], min[ i ] + 10.0 );
46+
}
47+
3848
b.tic();
3949
for ( i = 0; i < b.iterations; i++ ) {
40-
min = uniform( 0.0, 10.0 );
41-
max = uniform( min, min + 10.0 );
42-
y = median( min, max );
50+
y = median( min[ i % len ], max[ i % len ] );
4351
if ( isnan( y ) ) {
4452
b.fail( 'should not return NaN' );
4553
}

lib/node_modules/@stdlib/stats/base/dists/arcsine/mode/benchmark/benchmark.js

+11-3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
// MODULES //
2222

2323
var bench = require( '@stdlib/bench' );
24+
var Float64Array = require( '@stdlib/array/float64' );
2425
var uniform = require( '@stdlib/random/base/uniform' );
2526
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2627
var pkg = require( './../package.json' ).name;
@@ -32,14 +33,21 @@ var mode = require( './../lib' );
3233
bench( pkg, function benchmark( b ) {
3334
var min;
3435
var max;
36+
var len;
3537
var y;
3638
var i;
3739

40+
len = 100;
41+
min = new Float64Array( len );
42+
max = new Float64Array( len );
43+
for ( i = 0; i < len; i++ ) {
44+
min[ i ] = uniform( 0.0, 10.0 );
45+
max[ i ] = uniform( min[ i ], min[ i ] + 10.0 );
46+
}
47+
3848
b.tic();
3949
for ( i = 0; i < b.iterations; i++ ) {
40-
min = uniform( 0.0, 10.0 );
41-
max = uniform( min, min + 10.0 );
42-
y = mode( min, max );
50+
y = mode( min[ i % len ], max[ i % len ] );
4351
if ( isnan( y ) ) {
4452
b.fail( 'should not return NaN' );
4553
}

lib/node_modules/@stdlib/stats/base/dists/arcsine/mode/benchmark/benchmark.native.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
var resolve = require( 'path' ).resolve;
2424
var bench = require( '@stdlib/bench' );
2525
var Float64Array = require( '@stdlib/array/float64' );
26-
var randu = require( '@stdlib/random/base/randu' );
2726
var uniform = require( '@stdlib/random/base/uniform' );
2827
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2928
var tryRequire = require( '@stdlib/utils/try-require' );
@@ -51,7 +50,7 @@ bench( pkg+'::native', opts, function benchmark( b ) {
5150
min = new Float64Array( len );
5251
max = new Float64Array( len );
5352
for ( i = 0; i < len; i++ ) {
54-
min[ i ] = ( randu()*10.0 );
53+
min[ i ] = uniform( 0.0, 10.0 );
5554
max[ i ] = uniform( min[ i ], min[ i ] + 10.0 );
5655
}
5756

lib/node_modules/@stdlib/stats/base/dists/arcsine/pdf/benchmark/benchmark.js

+20-6
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
// MODULES //
2222

2323
var bench = require( '@stdlib/bench' );
24+
var Float64Array = require( '@stdlib/array/float64' );
2425
var uniform = require( '@stdlib/random/base/uniform' );
2526
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2627
var pkg = require( './../package.json' ).name;
@@ -32,16 +33,24 @@ var pdf = require( './../lib' );
3233
bench( pkg, function benchmark( b ) {
3334
var min;
3435
var max;
36+
var len;
3537
var x;
3638
var y;
3739
var i;
3840

41+
len = 100;
42+
x = new Float64Array( len );
43+
min = new Float64Array( len );
44+
max = new Float64Array( len );
45+
for ( i = 0; i < len; i++ ) {
46+
x[ i ] = uniform( -10.0, 10.0 );
47+
min[ i ] = uniform( -20.0, 0.0 );
48+
max[ i ] = uniform( min[ i ], min[ i ] + 40.0 );
49+
}
50+
3951
b.tic();
4052
for ( i = 0; i < b.iterations; i++ ) {
41-
x = uniform( -10.0, 10.0 );
42-
min = uniform( -20.0, 0.0 );
43-
max = uniform( min, min + 40.0 );
44-
y = pdf( x, min, max );
53+
y = pdf( x[ i % len ], min[ i % len ], max[ i % len ] );
4554
if ( isnan( y ) ) {
4655
b.fail( 'should not return NaN' );
4756
}
@@ -58,18 +67,23 @@ bench( pkg+':factory', function benchmark( b ) {
5867
var mypdf;
5968
var min;
6069
var max;
70+
var len;
6171
var x;
6272
var y;
6373
var i;
6474

6575
min = -1.5;
6676
max = 1.5;
6777
mypdf = pdf.factory( min, max );
78+
len = 100;
79+
x = new Float64Array( len );
80+
for ( i = 0; i < len; i++ ) {
81+
x[ i ] = uniform( -2.0, 0.0 );
82+
}
6883

6984
b.tic();
7085
for ( i = 0; i < b.iterations; i++ ) {
71-
x = uniform( -2.0, 0.0 );
72-
y = mypdf( x );
86+
y = mypdf( x[ i % len ] );
7387
if ( isnan( y ) ) {
7488
b.fail( 'should not return NaN' );
7589
}

lib/node_modules/@stdlib/stats/base/dists/arcsine/quantile/benchmark/benchmark.js

+20-7
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
// MODULES //
2222

2323
var bench = require( '@stdlib/bench' );
24-
var randu = require( '@stdlib/random/base/randu' );
24+
var Float64Array = require( '@stdlib/array/float64' );
2525
var uniform = require( '@stdlib/random/base/uniform' );
2626
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2727
var pkg = require( './../package.json' ).name;
@@ -33,16 +33,24 @@ var quantile = require( './../lib' );
3333
bench( pkg, function benchmark( b ) {
3434
var min;
3535
var max;
36+
var len;
3637
var p;
3738
var y;
3839
var i;
3940

41+
len = 100;
42+
p = new Float64Array( len );
43+
min = new Float64Array( len );
44+
max = new Float64Array( len );
45+
for ( i = 0; i < len; i++ ) {
46+
p[ i ] = uniform( 0.0, 1.0 );
47+
min[ i ] = uniform( -20.0, 0.0 );
48+
max[ i ] = uniform( min[ i ], min[ i ] + 40.0 );
49+
}
50+
4051
b.tic();
4152
for ( i = 0; i < b.iterations; i++ ) {
42-
p = randu();
43-
min = uniform( -20.0, 0.0 );
44-
max = uniform( min, min + 40.0 );
45-
y = quantile( p, min, max );
53+
y = quantile( p[ i % len ], min[ i % len ], max[ i % len ] );
4654
if ( isnan( y ) ) {
4755
b.fail( 'should not return NaN' );
4856
}
@@ -59,18 +67,23 @@ bench( pkg+':factory', function benchmark( b ) {
5967
var myquantile;
6068
var min;
6169
var max;
70+
var len;
6271
var p;
6372
var y;
6473
var i;
6574

6675
min = -1.5;
6776
max = 1.5;
6877
myquantile = quantile.factory( min, max );
78+
len = 100;
79+
p = new Float64Array( len );
80+
for ( i = 0; i < len; i++ ) {
81+
p[ i ] = uniform( 0.0, 1.0 );
82+
}
6983

7084
b.tic();
7185
for ( i = 0; i < b.iterations; i++ ) {
72-
p = randu();
73-
y = myquantile( p );
86+
y = myquantile( p[ i % len ] );
7487
if ( isnan( y ) ) {
7588
b.fail( 'should not return NaN' );
7689
}

0 commit comments

Comments
 (0)