From 44141ab2fab1dc5aeb2a7af12d64524b6389e4f8 Mon Sep 17 00:00:00 2001 From: shraddha singh Date: Fri, 7 Feb 2025 11:48:12 +0530 Subject: [PATCH 1/2] bench: refactor random number stats/base/dists/signrank --- 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/signrank/cdf/benchmark/benchmark.js | 10 +++++----- .../base/dists/signrank/pdf/benchmark/benchmark.js | 10 +++++----- .../dists/signrank/quantile/benchmark/benchmark.js | 6 +++--- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dists/signrank/cdf/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/signrank/cdf/benchmark/benchmark.js index 16f764a8f1ae..3932582158b9 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/signrank/cdf/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/signrank/cdf/benchmark/benchmark.js @@ -21,8 +21,8 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); +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' ); @@ -38,8 +38,8 @@ bench( pkg, function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = randu() * 20.0; - n = ceil( randu()*20.0 ); + x = uniform( 0.0, 20.0 ); + n = discreteUniform( 1, 20 ); y = cdf( x, n ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); @@ -65,7 +65,7 @@ bench( pkg+':factory', function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = randu() * 20.0; + x = uniform( 0.0, 20.0 ); y = mycdf( x ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); diff --git a/lib/node_modules/@stdlib/stats/base/dists/signrank/pdf/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/signrank/pdf/benchmark/benchmark.js index 6e8750f4cbb1..b72c8c8b01de 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/signrank/pdf/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/signrank/pdf/benchmark/benchmark.js @@ -21,8 +21,8 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); +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' ); @@ -38,8 +38,8 @@ bench( pkg, function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = randu() * 20.0; - n = ceil( randu()*20.0 ); + x = uniform(0.0, 10.0); + n = discreteUniform( 1, 20 ); y = pdf( x, n ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); @@ -65,7 +65,7 @@ bench( pkg+':factory', function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = randu() * 20.0; + x = uniform(0.0, 20.0); y = mypdf( x ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); diff --git a/lib/node_modules/@stdlib/stats/base/dists/signrank/quantile/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/signrank/quantile/benchmark/benchmark.js index 4203815cf574..cbe2e86ef344 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/signrank/quantile/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/signrank/quantile/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 randint = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; @@ -38,7 +38,7 @@ bench( pkg, function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { - p = randu(); + p = uniform( 0.0, 1.0 ); n = randint( 1, 200 ); y = quantile( p, n ); if ( isnan( y ) ) { @@ -65,7 +65,7 @@ bench( pkg+':factory', function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { - p = randu(); + p = uniform( 0.0, 1.0 ); y = myquantile( p ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); From 0ff98d9c2f6bc7c3f2c482f170c4e5e7e101229e Mon Sep 17 00:00:00 2001 From: shraddha singh Date: Tue, 11 Feb 2025 12:46:56 +0530 Subject: [PATCH 2/2] fix: move random number generation outside benchmark 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: passed - task: run_julia_benchmarks status: na - task: run_python_benchmarks status: na - task: run_r_benchmarks status: na - task: run_javascript_tests status: na --- --- .../dists/signrank/cdf/benchmark/benchmark.js | 25 ++++++++++++++----- .../dists/signrank/pdf/benchmark/benchmark.js | 24 ++++++++++++------ .../signrank/quantile/benchmark/benchmark.js | 11 ++++---- 3 files changed, 41 insertions(+), 19 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dists/signrank/cdf/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/signrank/cdf/benchmark/benchmark.js index 3932582158b9..90db507e35f4 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/signrank/cdf/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/signrank/cdf/benchmark/benchmark.js @@ -31,16 +31,23 @@ var cdf = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { - var n; + var nValues; + var values; var x; - var y; var i; + var y; + + values = new Array( b.iterations ); + nValues = new Array( b.iterations ); + for ( i = 0; i < b.iterations; i++ ) { + values[ i ] = uniform( 0.0, 20.0 ); + nValues[ i ] = discreteUniform( 1, 20 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = uniform( 0.0, 20.0 ); - n = discreteUniform( 1, 20 ); - y = cdf( x, n ); + x = values[ i ]; + y = cdf( x, nValues[ i ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -54,6 +61,7 @@ bench( pkg, function benchmark( b ) { }); bench( pkg+':factory', function benchmark( b ) { + var values; var mycdf; var n; var x; @@ -63,9 +71,14 @@ bench( pkg+':factory', function benchmark( b ) { n = 20; mycdf = cdf.factory( n ); + values = new Array( b.iterations ); + for ( i = 0; i < b.iterations; i++ ) { + values[ i ] = uniform( 0.0, 20.0 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = uniform( 0.0, 20.0 ); + x = values[ i ]; y = mycdf( x ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); diff --git a/lib/node_modules/@stdlib/stats/base/dists/signrank/pdf/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/signrank/pdf/benchmark/benchmark.js index b72c8c8b01de..4ea7df0cd6d7 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/signrank/pdf/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/signrank/pdf/benchmark/benchmark.js @@ -31,16 +31,21 @@ var pdf = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { - var n; - var x; + var nValues; + var values; var y; var i; + values = new Array( b.iterations ); + nValues = new Array( b.iterations ); + for ( i = 0; i < b.iterations; i++ ) { + values[ i ] = uniform( 0.0, 10.0 ); + nValues[ i ] = discreteUniform( 1, 20 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = uniform(0.0, 10.0); - n = discreteUniform( 1, 20 ); - y = pdf( x, n ); + y = pdf( values[ i ], nValues[ i ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -54,19 +59,22 @@ bench( pkg, function benchmark( b ) { }); bench( pkg+':factory', function benchmark( b ) { + var values; var mypdf; var n; - var x; var y; var i; + values = new Array( b.iterations ); + for ( i = 0; i < b.iterations; i++ ) { + values[ i ] = uniform( 0.0, 20.0 ); + } n = 20; mypdf = pdf.factory( n ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = uniform(0.0, 20.0); - y = mypdf( x ); + y = mypdf( values[ i ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/signrank/quantile/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/signrank/quantile/benchmark/benchmark.js index cbe2e86ef344..0a18a5dabb16 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/signrank/quantile/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/signrank/quantile/benchmark/benchmark.js @@ -21,11 +21,12 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var uniform = require( '@stdlib/random/base/uniform' ); -var randint = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var pkg = require( './../package.json' ).name; var quantile = require( './../lib' ); +var EPS = 1e-10; // MAIN // @@ -38,8 +39,8 @@ bench( pkg, function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { - p = uniform( 0.0, 1.0 ); - n = randint( 1, 200 ); + p = uniform( EPS, 1.0 ); + n = discreteUniform( 1, 200 ); y = quantile( p, n ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); @@ -65,7 +66,7 @@ bench( pkg+':factory', function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { - p = uniform( 0.0, 1.0 ); + p = uniform( EPS, 1.0 ); y = myquantile( p ); if ( isnan( y ) ) { b.fail( 'should not return NaN' );