Skip to content

Commit e459df4

Browse files
committed
bench: refactor to avoid value creation during benchmarking
1 parent cdcd6e1 commit e459df4

File tree

4 files changed

+32
-48
lines changed

4 files changed

+32
-48
lines changed

lib/node_modules/@stdlib/math/base/tools/evalpoly/benchmark/benchmark.factory.js

Lines changed: 12 additions & 17 deletions
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 uniform = require( '@stdlib/random/array/uniform' );
2525
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2626
var pkg = require( './../package.json' ).name;
2727
var factory = require( './../lib/factory.js' );
@@ -30,18 +30,18 @@ var factory = require( './../lib/factory.js' );
3030
// MAIN //
3131

3232
bench( pkg+'::create:factory', function benchmark( b ) {
33-
var c;
33+
var values;
3434
var f;
3535
var i;
3636

37-
c = [];
38-
for ( i = 0; i < 10; i++ ) {
39-
c.push( randu() );
40-
}
37+
values = [
38+
uniform( 10, 0.0, 100.0 ),
39+
uniform( 10, 0.0, 100.0 ),
40+
uniform( 10, 0.0, 100.0 )
41+
];
4142
b.tic();
4243
for ( i = 0; i < b.iterations; i++ ) {
43-
c[ 0 ] = randu();
44-
f = factory( c );
44+
f = factory( values[ i%values.length ] );
4545
if ( typeof f !== 'function' ) {
4646
b.fail( 'should return a function' );
4747
}
@@ -55,22 +55,17 @@ bench( pkg+'::create:factory', function benchmark( b ) {
5555
});
5656

5757
bench( pkg+'::evaluate:factory', function benchmark( b ) {
58-
var x;
58+
var values;
5959
var v;
6060
var f;
61-
var c;
6261
var i;
6362

64-
c = [];
65-
for ( i = 0; i < 10; i++ ) {
66-
c.push( randu() );
67-
}
68-
f = factory( c );
63+
f = factory( uniform( 10, 0.0, 100.0 ) );
64+
values = uniform( 10, 0.0, 100.0 );
6965

7066
b.tic();
7167
for ( i = 0; i < b.iterations; i++ ) {
72-
x = randu() * 100.0;
73-
v = f( x );
68+
v = f( values[ i%values.length ] );
7469
if ( isnan( v ) ) {
7570
b.fail( 'should not return NaN' );
7671
}

lib/node_modules/@stdlib/math/base/tools/evalpoly/benchmark/benchmark.factory.length.js

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
var bench = require( '@stdlib/bench' );
2424
var pow = require( '@stdlib/math/base/special/pow' );
25-
var randu = require( '@stdlib/random/base/randu' );
25+
var uniform = require( '@stdlib/random/array/uniform' );
2626
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2727
var pkg = require( './../package.json' ).name;
2828
var factory = require( './../lib/factory.js' );
@@ -38,15 +38,7 @@ var factory = require( './../lib/factory.js' );
3838
* @returns {Function} benchmark function
3939
*/
4040
function createBenchmark( len ) {
41-
var polyval;
42-
var c;
43-
var i;
44-
45-
c = [];
46-
for ( i = 0; i < len; i++ ) {
47-
c.push( randu() );
48-
}
49-
polyval = factory( c );
41+
var polyval = factory( uniform( len, 0.0, 100.0 ) );
5042
return benchmark;
5143

5244
/**
@@ -60,10 +52,11 @@ function createBenchmark( len ) {
6052
var v;
6153
var i;
6254

55+
x = uniform( 10, 0.0, 100.0 );
56+
6357
b.tic();
6458
for ( i = 0; i < b.iterations; i++ ) {
65-
x = randu() * 100.0;
66-
v = polyval( x );
59+
v = polyval( x[ i%x.length ] );
6760
if ( isnan( v ) ) {
6861
b.fail( 'should not return NaN' );
6962
}

lib/node_modules/@stdlib/math/base/tools/evalpoly/benchmark/benchmark.js

Lines changed: 10 additions & 9 deletions
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 uniform = require( '@stdlib/random/array/uniform' );
2525
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2626
var pkg = require( './../package.json' ).name;
2727
var evalpoly = require( './../lib' );
@@ -30,20 +30,21 @@ var evalpoly = require( './../lib' );
3030
// MAIN //
3131

3232
bench( pkg, function benchmark( b ) {
33-
var c;
33+
var coefs;
3434
var x;
3535
var v;
3636
var i;
3737

38-
c = [];
39-
for ( i = 0; i < 10; i++ ) {
40-
c.push( randu() );
41-
}
38+
coefs = [
39+
uniform( 10, 0.0, 100.0 ),
40+
uniform( 10, 0.0, 100.0 ),
41+
uniform( 10, 0.0, 100.0 )
42+
];
43+
x = uniform( 10, 0.0, 100.0 );
44+
4245
b.tic();
4346
for ( i = 0; i < b.iterations; i++ ) {
44-
c[ 0 ] = randu();
45-
x = randu() * 100.0;
46-
v = evalpoly( c, x );
47+
v = evalpoly( coefs[ i%coefs.length ], x[ i%x.length ] );
4748
if ( isnan( v ) ) {
4849
b.fail( 'should not return NaN' );
4950
}

lib/node_modules/@stdlib/math/base/tools/evalpoly/benchmark/benchmark.length.js

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
var bench = require( '@stdlib/bench' );
2424
var pow = require( '@stdlib/math/base/special/pow' );
25-
var randu = require( '@stdlib/random/base/randu' );
25+
var uniform = require( '@stdlib/random/array/uniform' );
2626
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2727
var pkg = require( './../package.json' ).name;
2828
var evalpoly = require( './../lib' );
@@ -38,13 +38,7 @@ var evalpoly = require( './../lib' );
3838
* @returns {Function} benchmark function
3939
*/
4040
function createBenchmark( len ) {
41-
var c;
42-
var i;
43-
44-
c = [];
45-
for ( i = 0; i < len; i++ ) {
46-
c.push( randu() );
47-
}
41+
var c = uniform( len, 0.0, 100.0 );
4842
return benchmark;
4943

5044
/**
@@ -58,10 +52,11 @@ function createBenchmark( len ) {
5852
var v;
5953
var i;
6054

55+
x = uniform( 10, 0.0, 100.0 );
56+
6157
b.tic();
6258
for ( i = 0; i < b.iterations; i++ ) {
63-
x = randu() * 100.0;
64-
v = evalpoly( c, x );
59+
v = evalpoly( c, x[ i%x.length ] );
6560
if ( isnan( v ) ) {
6661
b.fail( 'should not return NaN' );
6762
}

0 commit comments

Comments
 (0)