From a12a5431e4b67122b7438bdc3eaf6e988adc71c2 Mon Sep 17 00:00:00 2001 From: Karan Anand Date: Wed, 22 Jan 2025 15:02:33 -0800 Subject: [PATCH] bench: move random number generation outside the benchmarking loops --- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: passed - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: na - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- type: pre_push_report description: Results of running various checks prior to pushing changes. report: - task: run_javascript_examples status: na - task: run_c_examples status: na - task: run_cpp_examples status: na - task: run_javascript_readme_examples status: na - task: run_c_benchmarks status: na - task: run_cpp_benchmarks status: na - task: run_fortran_benchmarks status: na - task: run_javascript_benchmarks status: na - task: run_julia_benchmarks status: na - task: run_python_benchmarks status: na - task: run_r_benchmarks status: na - task: run_javascript_tests status: na --- --- .../base/dists/chi/cdf/benchmark/benchmark.js | 27 +++- .../dists/chi/ctor/benchmark/benchmark.js | 123 +++++++++++++++--- .../dists/chi/entropy/benchmark/benchmark.js | 13 +- .../dists/chi/kurtosis/benchmark/benchmark.js | 13 +- .../dists/chi/logpdf/benchmark/benchmark.js | 27 +++- .../dists/chi/mean/benchmark/benchmark.js | 13 +- .../dists/chi/mode/benchmark/benchmark.js | 4 +- .../chi/mode/benchmark/benchmark.native.js | 4 +- .../base/dists/chi/pdf/benchmark/benchmark.js | 27 +++- .../dists/chi/quantile/benchmark/benchmark.js | 27 +++- .../dists/chi/skewness/benchmark/benchmark.js | 13 +- .../dists/chi/stdev/benchmark/benchmark.js | 13 +- .../dists/chi/variance/benchmark/benchmark.js | 13 +- 13 files changed, 246 insertions(+), 71 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dists/chi/cdf/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/chi/cdf/benchmark/benchmark.js index adcf491af580..0ff24d3497af 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/chi/cdf/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/chi/cdf/benchmark/benchmark.js @@ -21,8 +21,9 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; var cdf = require( './../lib' ); @@ -31,16 +32,23 @@ var cdf = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var k; var x; var y; var i; + len = 100; + x = new Float64Array( len ); + k = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( 0.0, 100.0 ); + k[ i ] = discreteUniform( 1, 100 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = randu() * 100.0; - k = ceil( randu()*100.0 ); - y = cdf( x, k ); + y = cdf( x[ i % len ], k[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -55,6 +63,7 @@ bench( pkg, function benchmark( b ) { bench( pkg+':factory', function benchmark( b ) { var mycdf; + var len; var k; var x; var y; @@ -62,11 +71,15 @@ bench( pkg+':factory', function benchmark( b ) { k = 10.0; mycdf = cdf.factory( k ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( 0.0, 100.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = randu() * 100.0; - y = mycdf( x ); + y = mycdf( x[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/chi/ctor/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/chi/ctor/benchmark/benchmark.js index f46d742669cf..222cedcee9a4 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/chi/ctor/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/chi/ctor/benchmark/benchmark.js @@ -21,7 +21,8 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var EPS = require( '@stdlib/constants/float64/eps' ); var pkg = require( './../package.json' ).name; @@ -32,13 +33,19 @@ var Chi = require( './../lib' ); bench( pkg+'::instantiation', function benchmark( b ) { var dist; + var len; var i; var k; + len = 100; + k = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + k[ i ] = uniform( EPS, 10.0 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - k = ( randu() * 10.0 ) + EPS; - dist = new Chi( k ); + dist = new Chi( k[ i % len ] ); if ( !( dist instanceof Chi ) ) { b.fail( 'should return a distribution instance' ); } @@ -77,18 +84,23 @@ bench( pkg+'::get:k', function benchmark( b ) { bench( pkg+'::set:k', function benchmark( b ) { var dist; + var len; var y; var i; var k; k = 5.54; dist = new Chi( k ); + len = 100; + y = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + y[ i ] = uniform( EPS, 10.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - y = ( 10.0*randu() ) + EPS; - dist.k = y; - if ( dist.k !== y ) { + dist.k = y[ i % len ]; + if ( dist.k !== y[ i % len ] ) { b.fail( 'should return set value' ); } } @@ -102,16 +114,23 @@ bench( pkg+'::set:k', function benchmark( b ) { bench( pkg+':entropy', function benchmark( b ) { var dist; + var len; + var x; var y; var i; var k; k = 5.54; dist = new Chi( k ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( EPS, 10.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - dist.k = ( 10.0*randu() ) + EPS; + dist.k = x[ i % len ]; y = dist.entropy; if ( isnan( y ) ) { b.fail( 'should not return NaN' ); @@ -127,16 +146,23 @@ bench( pkg+':entropy', function benchmark( b ) { bench( pkg+':kurtosis', function benchmark( b ) { var dist; + var len; + var x; var y; var i; var k; k = 5.54; dist = new Chi( k ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( 1.0 + EPS, 10.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - dist.k = ( 10.0*randu() ) + 1.0 + EPS; + dist.k = x[ i % len ]; y = dist.kurtosis; if ( isnan( y ) ) { b.fail( 'should not return NaN' ); @@ -152,16 +178,23 @@ bench( pkg+':kurtosis', function benchmark( b ) { bench( pkg+':mean', function benchmark( b ) { var dist; + var len; + var x; var y; var i; var k; k = 5.54; dist = new Chi( k ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( EPS, 10.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - dist.k = ( 10.0*randu() ) + EPS; + dist.k = x[ i % len ]; y = dist.mean; if ( isnan( y ) ) { b.fail( 'should not return NaN' ); @@ -177,16 +210,23 @@ bench( pkg+':mean', function benchmark( b ) { bench( pkg+':mode', function benchmark( b ) { var dist; + var len; + var x; var y; var i; var k; k = 5.54; dist = new Chi( k ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( 1.0 + EPS, 10.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - dist.k = ( 10.0*randu() ) + 1.0 + EPS; + dist.k = x[ i % len ]; y = dist.mode; if ( isnan( y ) ) { b.fail( 'should not return NaN' ); @@ -202,16 +242,23 @@ bench( pkg+':mode', function benchmark( b ) { bench( pkg+':skewness', function benchmark( b ) { var dist; + var len; + var x; var y; var i; var k; k = 5.54; dist = new Chi( k ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( 1.0 + EPS, 10.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - dist.k = ( 10.0*randu() ) + 1.0 + EPS; + dist.k = x[ i % len ]; y = dist.skewness; if ( isnan( y ) ) { b.fail( 'should not return NaN' ); @@ -227,16 +274,23 @@ bench( pkg+':skewness', function benchmark( b ) { bench( pkg+':stdev', function benchmark( b ) { var dist; + var len; + var x; var y; var i; var k; k = 5.54; dist = new Chi( k ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( 1.0 + EPS, 10.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - dist.k = ( 10.0*randu() ) + 1.0 + EPS; + dist.k = x[ i % len ]; y = dist.stdev; if ( isnan( y ) ) { b.fail( 'should not return NaN' ); @@ -252,16 +306,23 @@ bench( pkg+':stdev', function benchmark( b ) { bench( pkg+':variance', function benchmark( b ) { var dist; + var len; + var x; var y; var i; var k; k = 5.54; dist = new Chi( k ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( 1.0 + EPS, 10.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - dist.k = ( 10.0*randu() ) + 1.0 + EPS; + dist.k = x[ i % len ]; y = dist.variance; if ( isnan( y ) ) { b.fail( 'should not return NaN' ); @@ -277,6 +338,7 @@ bench( pkg+':variance', function benchmark( b ) { bench( pkg+':cdf', function benchmark( b ) { var dist; + var len; var x; var y; var i; @@ -284,11 +346,15 @@ bench( pkg+':cdf', function benchmark( b ) { k = 5.54; dist = new Chi( k ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( 0.0, 1.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = randu(); - y = dist.cdf( x ); + y = dist.cdf( x[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -303,6 +369,7 @@ bench( pkg+':cdf', function benchmark( b ) { bench( pkg+':logpdf', function benchmark( b ) { var dist; + var len; var x; var y; var i; @@ -310,11 +377,15 @@ bench( pkg+':logpdf', function benchmark( b ) { k = 5.54; dist = new Chi( k ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( 0.0, 1.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = randu(); - y = dist.logpdf( x ); + y = dist.logpdf( x[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -329,6 +400,7 @@ bench( pkg+':logpdf', function benchmark( b ) { bench( pkg+':pdf', function benchmark( b ) { var dist; + var len; var x; var y; var i; @@ -336,11 +408,15 @@ bench( pkg+':pdf', function benchmark( b ) { k = 5.54; dist = new Chi( k ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( 0.0, 1.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = randu(); - y = dist.pdf( x ); + y = dist.pdf( x[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -355,6 +431,7 @@ bench( pkg+':pdf', function benchmark( b ) { bench( pkg+':quantile', function benchmark( b ) { var dist; + var len; var x; var y; var i; @@ -362,11 +439,15 @@ bench( pkg+':quantile', function benchmark( b ) { k = 5.54; dist = new Chi( k ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( 0.0, 1.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = randu(); - y = dist.quantile( x ); + y = dist.quantile( x[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/chi/entropy/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/chi/entropy/benchmark/benchmark.js index 37d0f89d2555..3313b7f39017 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/chi/entropy/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/chi/entropy/benchmark/benchmark.js @@ -21,7 +21,8 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var EPS = require( '@stdlib/constants/float64/eps' ); var pkg = require( './../package.json' ).name; @@ -31,14 +32,20 @@ var entropy = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var k; var y; var i; + len = 100; + k = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + k[ i ] = uniform( EPS, 20.0 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - k = ( randu()*20.0 ) + EPS; - y = entropy( k ); + y = entropy( k[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/chi/kurtosis/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/chi/kurtosis/benchmark/benchmark.js index 6751f7eeca92..cafaf285d900 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/chi/kurtosis/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/chi/kurtosis/benchmark/benchmark.js @@ -21,7 +21,8 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var EPS = require( '@stdlib/constants/float64/eps' ); var pkg = require( './../package.json' ).name; @@ -31,14 +32,20 @@ var kurtosis = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var k; var y; var i; + len = 100; + k = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + k[ i ] = uniform( EPS, 20.0 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - k = ( randu()*20.0 ) + EPS; - y = kurtosis( k ); + y = kurtosis( k[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/chi/logpdf/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/chi/logpdf/benchmark/benchmark.js index 51330b30ddb8..8b4df406f3d0 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/chi/logpdf/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/chi/logpdf/benchmark/benchmark.js @@ -21,8 +21,9 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; var logpdf = require( './../lib' ); @@ -31,16 +32,23 @@ var logpdf = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var k; var x; var y; var i; + len = 100; + x = new Float64Array( len ); + k = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( 0.0, 100.0 ); + k[ i ] = discreteUniform( 1, 100 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = randu() * 100.0; - k = ceil( randu()*100.0 ); - y = logpdf( x, k ); + y = logpdf( x[ i % len ], k[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -55,6 +63,7 @@ bench( pkg, function benchmark( b ) { bench( pkg+':factory', function benchmark( b ) { var mylogpdf; + var len; var k; var x; var y; @@ -62,11 +71,15 @@ bench( pkg+':factory', function benchmark( b ) { k = 10.0; mylogpdf = logpdf.factory( k ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( 0.0, 100.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = randu() * 100.0; - y = mylogpdf( x ); + y = mylogpdf( x[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/chi/mean/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/chi/mean/benchmark/benchmark.js index c8f29c68dff5..d6959d8e722c 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/chi/mean/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/chi/mean/benchmark/benchmark.js @@ -21,7 +21,8 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var EPS = require( '@stdlib/constants/float64/eps' ); var pkg = require( './../package.json' ).name; @@ -31,14 +32,20 @@ var mean = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var k; var y; var i; + len = 100; + k = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + k[ i ] = uniform( EPS, 20.0 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - k = ( randu()*20.0 ) + EPS; - y = mean( k ); + y = mean( k[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/chi/mode/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/chi/mode/benchmark/benchmark.js index 2fc92a1e52cc..de649dfd6536 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/chi/mode/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/chi/mode/benchmark/benchmark.js @@ -21,7 +21,7 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ); var Float64Array = require( '@stdlib/array/float64' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; @@ -39,7 +39,7 @@ bench( pkg, function benchmark( b ) { len = 100; k = new Float64Array( len ); for ( i = 0; i < len; i++ ) { - k[ i ] = ( randu()*20.0 ) + 1.0; + k[ i ] = uniform( 1.0, 20.0 ); } b.tic(); diff --git a/lib/node_modules/@stdlib/stats/base/dists/chi/mode/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/stats/base/dists/chi/mode/benchmark/benchmark.native.js index ad2d6d33756e..2afdca88019a 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/chi/mode/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/stats/base/dists/chi/mode/benchmark/benchmark.native.js @@ -24,7 +24,7 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); var Float64Array = require( '@stdlib/array/float64' ); var EPS = require( '@stdlib/constants/float64/eps' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var tryRequire = require( '@stdlib/utils/try-require' ); var pkg = require( './../package.json' ).name; @@ -49,7 +49,7 @@ bench( pkg+'::native', opts, function benchmark( b ) { len = 100; k = new Float64Array( len ); for ( i = 0; i < len; i++ ) { - k[ i ] = ( randu()*20.0 ) + 1.0 + EPS; + k[ i ] = uniform( 1.0 + EPS, 20.0 ); } b.tic(); diff --git a/lib/node_modules/@stdlib/stats/base/dists/chi/pdf/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/chi/pdf/benchmark/benchmark.js index 0efaf83f9a76..93a064b28b1e 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/chi/pdf/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/chi/pdf/benchmark/benchmark.js @@ -21,8 +21,9 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; var pdf = require( './../lib' ); @@ -31,16 +32,23 @@ var pdf = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var k; var x; var y; var i; + len = 100; + x = new Float64Array( len ); + k = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( 0.0, 100.0 ); + k[ i ] = discreteUniform( 1, 100 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = randu() * 100.0; - k = ceil( randu()*100.0 ); - y = pdf( x, k ); + y = pdf( x[ i % len ], k[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -55,6 +63,7 @@ bench( pkg, function benchmark( b ) { bench( pkg+':factory', function benchmark( b ) { var mypdf; + var len; var k; var x; var y; @@ -62,11 +71,15 @@ bench( pkg+':factory', function benchmark( b ) { k = 10.0; mypdf = pdf.factory( k ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( 0.0, 100.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = randu() * 100.0; - y = mypdf( x ); + y = mypdf( x[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/chi/quantile/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/chi/quantile/benchmark/benchmark.js index a3ab104d5266..aec06e40e811 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/chi/quantile/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/chi/quantile/benchmark/benchmark.js @@ -21,8 +21,9 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; var quantile = require( './../lib' ); @@ -31,16 +32,23 @@ var quantile = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var k; var p; var y; var i; + len = 100; + p = new Float64Array( len ); + k = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + p[ i ] = uniform( 0.0, 1.0 ); + k[ i ] = discreteUniform( 1, 30 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - p = randu(); - k = ceil( randu()*30.0 ); - y = quantile( p, k ); + y = quantile( p[ i % len ], k[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -55,6 +63,7 @@ bench( pkg, function benchmark( b ) { bench( pkg+':factory', function benchmark( b ) { var myquantile; + var len; var k; var p; var y; @@ -62,11 +71,15 @@ bench( pkg+':factory', function benchmark( b ) { k = 10.0; myquantile = quantile.factory( k ); + len = 100; + p = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + p[ i ] = uniform( 0.0, 1.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - p = randu(); - y = myquantile( p ); + y = myquantile( p[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/chi/skewness/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/chi/skewness/benchmark/benchmark.js index 6b651706a4b0..c757b0ae71ad 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/chi/skewness/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/chi/skewness/benchmark/benchmark.js @@ -21,7 +21,8 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var EPS = require( '@stdlib/constants/float64/eps' ); var pkg = require( './../package.json' ).name; @@ -31,14 +32,20 @@ var skewness = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var k; var y; var i; + len = 100; + k = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + k[ i ] = uniform( EPS, 20.0 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - k = ( randu()*20.0 ) + EPS; - y = skewness( k ); + y = skewness( k[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/chi/stdev/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/chi/stdev/benchmark/benchmark.js index aa23a2628ebb..61b9bd5a5e42 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/chi/stdev/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/chi/stdev/benchmark/benchmark.js @@ -21,7 +21,8 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var EPS = require( '@stdlib/constants/float64/eps' ); var pkg = require( './../package.json' ).name; @@ -31,14 +32,20 @@ var stdev = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var k; var y; var i; + len = 100; + k = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + k[ i ] = uniform( EPS, 20.0 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - k = ( randu()*20.0 ) + EPS; - y = stdev( k ); + y = stdev( k[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/chi/variance/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/chi/variance/benchmark/benchmark.js index 02a9630835e7..ddcd8cf3cc06 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/chi/variance/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/chi/variance/benchmark/benchmark.js @@ -21,7 +21,8 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var EPS = require( '@stdlib/constants/float64/eps' ); var pkg = require( './../package.json' ).name; @@ -31,14 +32,20 @@ var variance = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var k; var y; var i; + len = 100; + k = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + k[ i ] = uniform( EPS, 20.0 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - k = ( randu()*20.0 ) + EPS; - y = variance( k ); + y = variance( k[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); }