Skip to content

Commit f2ab87a

Browse files
committed
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: 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 ---
1 parent 2edc25b commit f2ab87a

File tree

10 files changed

+210
-49
lines changed

10 files changed

+210
-49
lines changed

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

Lines changed: 18 additions & 5 deletions
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;
@@ -30,16 +31,23 @@ var cdf = require( './../lib' );
3031
// MAIN //
3132

3233
bench( pkg, function benchmark( b ) {
34+
var len;
3335
var p;
3436
var x;
3537
var y;
3638
var i;
3739

40+
len = 100;
41+
p = new Float64Array( len );
42+
x = new Float64Array( len );
43+
for ( i = 0; i < len; i++ ) {
44+
x[ i ] = uniform( -1.0, 2.0 );
45+
p[ i ] = uniform( 0.0, 1.0 );
46+
}
47+
3848
b.tic();
3949
for ( i = 0; i < b.iterations; i++ ) {
40-
x = uniform( -1.0, 2.0 );
41-
p = uniform( 0.0, 1.0 );
42-
y = cdf( x, p );
50+
y = cdf( x[ i % len ], p[ i % len ] );
4351
if ( isnan( y ) ) {
4452
b.fail( 'should not return NaN' );
4553
}
@@ -54,18 +62,23 @@ bench( pkg, function benchmark( b ) {
5462

5563
bench( pkg+':factory', function benchmark( b ) {
5664
var mycdf;
65+
var len;
5766
var p;
5867
var x;
5968
var y;
6069
var i;
6170

6271
p = 0.3;
6372
mycdf = cdf.factory( p );
73+
len = 100;
74+
x = new Float64Array( len );
75+
for ( i = 0; i < len; i++ ) {
76+
x[ i ] = uniform( -1.0, 2.0 );
77+
}
6478

6579
b.tic();
6680
for ( i = 0; i < b.iterations; i++ ) {
67-
x = uniform( -1.0, 2.0 );
68-
y = mycdf( x );
81+
y = mycdf( x[ i % len ] );
6982
if ( isnan( y ) ) {
7083
b.fail( 'should not return NaN' );
7184
}

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

Lines changed: 101 additions & 20 deletions
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 discreteUniform = require( '@stdlib/random/base/discrete-uniform' );
2627
var isnan = require( '@stdlib/math/base/assert/is-nan' );
@@ -33,13 +34,19 @@ var Bernoulli = require( './../lib' );
3334

3435
bench( pkg+'::instantiation', function benchmark( b ) {
3536
var dist;
37+
var len;
3638
var p;
3739
var i;
3840

41+
len = 100;
42+
p = new Float64Array( len );
43+
for ( i = 0; i < len; i++ ) {
44+
p[ i ] = uniform( 0.0, 1.0 );
45+
}
46+
3947
b.tic();
4048
for ( i = 0; i < b.iterations; i++ ) {
41-
p = uniform( 0.0, 1.0 );
42-
dist = new Bernoulli( p );
49+
dist = new Bernoulli( p[ i % len ] );
4350
if ( !( dist instanceof Bernoulli ) ) {
4451
b.fail( 'should return a distribution instance' );
4552
}
@@ -78,18 +85,23 @@ bench( pkg+'::get:p', function benchmark( b ) {
7885

7986
bench( pkg+'::set:p', function benchmark( b ) {
8087
var dist;
88+
var len;
8189
var p;
8290
var y;
8391
var i;
8492

8593
p = 0.54;
8694
dist = new Bernoulli( p );
95+
len = 100;
96+
y = new Float64Array( len );
97+
for ( i = 0; i < len; i++ ) {
98+
y[ i ] = uniform( 0.0, 1.0 );
99+
}
87100

88101
b.tic();
89102
for ( i = 0; i < b.iterations; i++ ) {
90-
y = uniform( 0.0, 1.0 );
91-
dist.p = y;
92-
if ( dist.p !== y ) {
103+
dist.p = y[ i % len ];
104+
if ( dist.p !== y[ i % len ] ) {
93105
b.fail( 'should return set value' );
94106
}
95107
}
@@ -103,16 +115,23 @@ bench( pkg+'::set:p', function benchmark( b ) {
103115

104116
bench( pkg+':entropy', function benchmark( b ) {
105117
var dist;
118+
var len;
119+
var x;
106120
var p;
107121
var y;
108122
var i;
109123

110124
p = 0.54;
111125
dist = new Bernoulli( p );
126+
len = 100;
127+
x = new Float64Array( len );
128+
for ( i = 0; i < len; i++ ) {
129+
x[ i ] = uniform( 0.0, 1.0 );
130+
}
112131

113132
b.tic();
114133
for ( i = 0; i < b.iterations; i++ ) {
115-
dist.p = uniform( 0.0, 1.0 );
134+
dist.p = x[ i % len ];
116135
y = dist.entropy;
117136
if ( isnan( y ) ) {
118137
b.fail( 'should not return NaN' );
@@ -128,16 +147,23 @@ bench( pkg+':entropy', function benchmark( b ) {
128147

129148
bench( pkg+':kurtosis', function benchmark( b ) {
130149
var dist;
150+
var len;
151+
var x;
131152
var p;
132153
var y;
133154
var i;
134155

135156
p = 0.54;
136157
dist = new Bernoulli( p );
158+
len = 100;
159+
x = new Float64Array( len );
160+
for ( i = 0; i < len; i++ ) {
161+
x[ i ] = uniform( 0.0, 1.0 );
162+
}
137163

138164
b.tic();
139165
for ( i = 0; i < b.iterations; i++ ) {
140-
dist.p = uniform( 0.0, 1.0 );
166+
dist.p = x[ i % len ];
141167
y = dist.kurtosis;
142168
if ( isnan( y ) ) {
143169
b.fail( 'should not return NaN' );
@@ -153,16 +179,23 @@ bench( pkg+':kurtosis', function benchmark( b ) {
153179

154180
bench( pkg+':mean', function benchmark( b ) {
155181
var dist;
182+
var len;
183+
var x;
156184
var p;
157185
var y;
158186
var i;
159187

160188
p = 0.54;
161189
dist = new Bernoulli( p );
190+
len = 100;
191+
x = new Float64Array( len );
192+
for ( i = 0; i < len; i++ ) {
193+
x[ i ] = uniform( 0.0, 1.0 );
194+
}
162195

163196
b.tic();
164197
for ( i = 0; i < b.iterations; i++ ) {
165-
dist.p = uniform( 0.0, 1.0 );
198+
dist.p = x[ i % len ];
166199
y = dist.mean;
167200
if ( isnan( y ) ) {
168201
b.fail( 'should not return NaN' );
@@ -178,16 +211,23 @@ bench( pkg+':mean', function benchmark( b ) {
178211

179212
bench( pkg+':median', function benchmark( b ) {
180213
var dist;
214+
var len;
215+
var x;
181216
var p;
182217
var y;
183218
var i;
184219

185220
p = 0.54;
186221
dist = new Bernoulli( p );
222+
len = 100;
223+
x = new Float64Array( len );
224+
for ( i = 0; i < len; i++ ) {
225+
x[ i ] = uniform( 0.0, 1.0 );
226+
}
187227

188228
b.tic();
189229
for ( i = 0; i < b.iterations; i++ ) {
190-
dist.p = uniform( 0.0, 1.0 );
230+
dist.p = x[ i % len ];
191231
y = dist.median;
192232
if ( isnan( y ) ) {
193233
b.fail( 'should not return NaN' );
@@ -203,16 +243,23 @@ bench( pkg+':median', function benchmark( b ) {
203243

204244
bench( pkg+':skewness', function benchmark( b ) {
205245
var dist;
246+
var len;
247+
var x;
206248
var p;
207249
var y;
208250
var i;
209251

210252
p = 0.54;
211253
dist = new Bernoulli( p );
254+
len = 100;
255+
x = new Float64Array( len );
256+
for ( i = 0; i < len; i++ ) {
257+
x[ i ] = uniform( 0.0, 1.0 );
258+
}
212259

213260
b.tic();
214261
for ( i = 0; i < b.iterations; i++ ) {
215-
dist.p = uniform( 0.0, 1.0 );
262+
dist.p = x[ i % len ];
216263
y = dist.skewness;
217264
if ( isnan( y ) ) {
218265
b.fail( 'should not return NaN' );
@@ -228,16 +275,23 @@ bench( pkg+':skewness', function benchmark( b ) {
228275

229276
bench( pkg+':stdev', function benchmark( b ) {
230277
var dist;
278+
var len;
279+
var x;
231280
var p;
232281
var y;
233282
var i;
234283

235284
p = 0.54;
236285
dist = new Bernoulli( p );
286+
len = 100;
287+
x = new Float64Array( len );
288+
for ( i = 0; i < len; i++ ) {
289+
x[ i ] = uniform( 0.0, 1.0 );
290+
}
237291

238292
b.tic();
239293
for ( i = 0; i < b.iterations; i++ ) {
240-
dist.p = uniform( 0.0, 1.0 );
294+
dist.p = x[ i % len ];
241295
y = dist.stdev;
242296
if ( isnan( y ) ) {
243297
b.fail( 'should not return NaN' );
@@ -253,16 +307,23 @@ bench( pkg+':stdev', function benchmark( b ) {
253307

254308
bench( pkg+':variance', function benchmark( b ) {
255309
var dist;
310+
var len;
311+
var x;
256312
var p;
257313
var y;
258314
var i;
259315

260316
p = 0.54;
261317
dist = new Bernoulli( p );
318+
len = 100;
319+
x = new Float64Array( len );
320+
for ( i = 0; i < len; i++ ) {
321+
x[ i ] = uniform( 0.0, 1.0 );
322+
}
262323

263324
b.tic();
264325
for ( i = 0; i < b.iterations; i++ ) {
265-
dist.p = uniform( 0.0, 1.0 );
326+
dist.p = x[ i % len ];
266327
y = dist.variance;
267328
if ( isnan( y ) ) {
268329
b.fail( 'should not return NaN' );
@@ -278,18 +339,23 @@ bench( pkg+':variance', function benchmark( b ) {
278339

279340
bench( pkg+':cdf', function benchmark( b ) {
280341
var dist;
342+
var len;
281343
var p;
282344
var x;
283345
var y;
284346
var i;
285347

286348
p = 0.54;
287349
dist = new Bernoulli( p );
350+
len = 100;
351+
x = new Float64Array( len );
352+
for ( i = 0; i < len; i++ ) {
353+
x[ i ] = uniform( 0.0, 6.0 );
354+
}
288355

289356
b.tic();
290357
for ( i = 0; i < b.iterations; i++ ) {
291-
x = uniform( 0.0, 6.0 );
292-
y = dist.cdf( x );
358+
y = dist.cdf( x[ i % len ] );
293359
if ( isnan( y ) ) {
294360
b.fail( 'should not return NaN' );
295361
}
@@ -304,18 +370,23 @@ bench( pkg+':cdf', function benchmark( b ) {
304370

305371
bench( pkg+':mgf', function benchmark( b ) {
306372
var dist;
373+
var len;
307374
var p;
308375
var x;
309376
var y;
310377
var i;
311378

312379
p = 0.54;
313380
dist = new Bernoulli( p );
381+
len = 100;
382+
x = new Float64Array( len );
383+
for ( i = 0; i < len; i++ ) {
384+
x[ i ] = uniform( 0.0, -ln( 1.0-p ) );
385+
}
314386

315387
b.tic();
316388
for ( i = 0; i < b.iterations; i++ ) {
317-
x = uniform( 0.0, -ln( 1.0-p ) );
318-
y = dist.mgf( x );
389+
y = dist.mgf( x[ i % len ] );
319390
if ( isnan( y ) ) {
320391
b.fail( 'should not return NaN' );
321392
}
@@ -330,18 +401,23 @@ bench( pkg+':mgf', function benchmark( b ) {
330401

331402
bench( pkg+':pmf', function benchmark( b ) {
332403
var dist;
404+
var len;
333405
var p;
334406
var x;
335407
var y;
336408
var i;
337409

338410
p = 0.54;
339411
dist = new Bernoulli( p );
412+
len = 100;
413+
x = new Float64Array( len );
414+
for ( i = 0; i < len; i++ ) {
415+
x[ i ] = discreteUniform( 0, 8 );
416+
}
340417

341418
b.tic();
342419
for ( i = 0; i < b.iterations; i++ ) {
343-
x = discreteUniform( 0, 8 );
344-
y = dist.pmf( x );
420+
y = dist.pmf( x[ i % len ] );
345421
if ( isnan( y ) ) {
346422
b.fail( 'should not return NaN' );
347423
}
@@ -356,18 +432,23 @@ bench( pkg+':pmf', function benchmark( b ) {
356432

357433
bench( pkg+':quantile', function benchmark( b ) {
358434
var dist;
435+
var len;
359436
var p;
360437
var x;
361438
var y;
362439
var i;
363440

364441
p = 0.54;
365442
dist = new Bernoulli( p );
443+
len = 100;
444+
x = new Float64Array( len );
445+
for ( i = 0; i < len; i++ ) {
446+
x[ i ] = uniform( 0.0, 1.0 );
447+
}
366448

367449
b.tic();
368450
for ( i = 0; i < b.iterations; i++ ) {
369-
x = uniform( 0.0, 1.0 );
370-
y = dist.quantile( x );
451+
y = dist.quantile( x[ i % len ] );
371452
if ( isnan( y ) ) {
372453
b.fail( 'should not return NaN' );
373454
}

0 commit comments

Comments
 (0)