Skip to content

Commit dd8c6c9

Browse files
fixup! bench: refactor random number generation in JS benchmarks for stats/base/dists/levy
--- 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: failed ---
1 parent 2b283ac commit dd8c6c9

File tree

13 files changed

+232
-80
lines changed

13 files changed

+232
-80
lines changed

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

Lines changed: 104 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
// MODULES //
2222

2323
var bench = require( '@stdlib/bench' );
24-
var randu = require( '@stdlib/random/base/randu' );
24+
var Float64Array = require( '@stdlib/array/float64' );
25+
var uniform = require( '@stdlib/random/base/uniform' );
2526
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2627
var EPS = require( '@stdlib/constants/float64/eps' );
2728
var pkg = require( './../package.json' ).name;
@@ -32,15 +33,22 @@ var Levy = require( './../lib' );
3233

3334
bench( pkg+'::instantiation', function benchmark( b ) {
3435
var dist;
36+
var len;
3537
var mu;
3638
var c;
3739
var i;
3840

41+
len = 100;
42+
mu = new Float64Array( len );
43+
c = new Float64Array( len );
44+
for ( i = 0; i < len; i++ ) {
45+
mu[ i ] = uniform( EPS, 10.0 );
46+
c[ i ] = uniform(EPS, 10.0 );
47+
}
48+
3949
b.tic();
4050
for ( i = 0; i < b.iterations; i++ ) {
41-
mu = ( randu() * 10.0 ) + EPS;
42-
c = ( randu() * 10.0 ) + EPS;
43-
dist = new Levy( mu, c );
51+
dist = new Levy( mu[ i % len ], c[ i % len ] );
4452
if ( !( dist instanceof Levy ) ) {
4553
b.fail( 'should return a distribution instance' );
4654
}
@@ -81,20 +89,25 @@ bench( pkg+'::get:mu', function benchmark( b ) {
8189

8290
bench( pkg+'::set:mu', function benchmark( b ) {
8391
var dist;
92+
var len;
8493
var mu;
8594
var c;
8695
var y;
8796
var i;
8897

8998
mu = 2.0;
9099
c = 3.0;
100+
len = 100;
101+
y = new Float64Array( len );
91102
dist = new Levy( mu, c );
103+
for ( i = 0; i < len; i++ ) {
104+
y[ i ] = uniform( EPS, 100.0 );
105+
}
92106

93107
b.tic();
94108
for ( i = 0; i < b.iterations; i++ ) {
95-
y = ( 100.0*randu() ) + EPS;
96-
dist.mu = y;
97-
if ( dist.mu !== y ) {
109+
dist.mu = y[ i % len ];
110+
if ( dist.mu !== y[ i % len ] ) {
98111
b.fail( 'should return set value' );
99112
}
100113
}
@@ -134,20 +147,25 @@ bench( pkg+'::get:c', function benchmark( b ) {
134147

135148
bench( pkg+'::set:c', function benchmark( b ) {
136149
var dist;
150+
var len;
137151
var mu;
138152
var c;
139153
var y;
140154
var i;
141155

142156
mu = 2.0;
143157
c = 3.0;
158+
len = 100;
144159
dist = new Levy( mu, c );
160+
y = new Float64Array( len );
161+
for ( i = 0; i < len; i++ ) {
162+
y[ i ] = uniform( EPS, 100.0 );
163+
}
145164

146165
b.tic();
147166
for ( i = 0; i < b.iterations; i++ ) {
148-
y = ( 100.0*randu() ) + EPS;
149-
dist.c = y;
150-
if ( dist.c !== y ) {
167+
dist.c = y[ i % len ];
168+
if ( dist.c !== y[ i % len ] ) {
151169
b.fail( 'should return set value' );
152170
}
153171
}
@@ -161,18 +179,25 @@ bench( pkg+'::set:c', function benchmark( b ) {
161179

162180
bench( pkg+':entropy', function benchmark( b ) {
163181
var dist;
182+
var len;
164183
var mu;
184+
var x;
165185
var c;
166186
var y;
167187
var i;
168188

169189
mu = 2.0;
170190
c = 3.0;
191+
len = 100;
192+
x = new Float64Array( len );
171193
dist = new Levy( mu, c );
194+
for ( i = 0; i < len; i++ ) {
195+
x[ i ] = uniform( EPS, 100.0 );
196+
}
172197

173198
b.tic();
174199
for ( i = 0; i < b.iterations; i++ ) {
175-
dist.mu = ( 100.0*randu() ) + EPS;
200+
dist.mu = x[ i % len ];
176201
y = dist.entropy;
177202
if ( isnan( y ) ) {
178203
b.fail( 'should not return NaN' );
@@ -188,18 +213,25 @@ bench( pkg+':entropy', function benchmark( b ) {
188213

189214
bench( pkg+':mean', function benchmark( b ) {
190215
var dist;
216+
var len;
191217
var mu;
192218
var c;
219+
var x;
193220
var y;
194221
var i;
195222

196223
mu = 2.0;
197224
c = 3.0;
225+
len = 100;
226+
x = new Float64Array( len );
198227
dist = new Levy( mu, c );
228+
for ( i = 0; i < len; i++ ) {
229+
x[ i ] = uniform( EPS, 100.0 );
230+
}
199231

200232
b.tic();
201233
for ( i = 0; i < b.iterations; i++ ) {
202-
dist.mu = ( 100.0*randu() ) + EPS;
234+
dist.mu = x[ i % len ];
203235
y = dist.mean;
204236
if ( isnan( y ) ) {
205237
b.fail( 'should not return NaN' );
@@ -215,18 +247,25 @@ bench( pkg+':mean', function benchmark( b ) {
215247

216248
bench( pkg+':median', function benchmark( b ) {
217249
var dist;
250+
var len;
218251
var mu;
219252
var c;
253+
var x;
220254
var y;
221255
var i;
222256

223257
mu = 2.0;
224258
c = 3.0;
225259
dist = new Levy( mu, c );
260+
len = 100;
261+
x = new Float64Array( len );
262+
for ( i = 0; i < len; i++ ) {
263+
x[ i ] = uniform( EPS, 100.0 );
264+
}
226265

227266
b.tic();
228267
for ( i = 0; i < b.iterations; i++ ) {
229-
dist.mu = ( 100.0*randu() ) + EPS;
268+
dist.mu = x[ i % len ];
230269
y = dist.median;
231270
if ( isnan( y ) ) {
232271
b.fail( 'should not return NaN' );
@@ -242,18 +281,25 @@ bench( pkg+':median', function benchmark( b ) {
242281

243282
bench( pkg+':mode', function benchmark( b ) {
244283
var dist;
284+
var len;
245285
var mu;
246286
var c;
287+
var x;
247288
var y;
248289
var i;
249290

250291
mu = 2.0;
251292
c = 3.0;
293+
len = 100;
294+
x = new Float64Array( len );
252295
dist = new Levy( mu, c );
296+
for ( i = 0; i < len; i++ ) {
297+
x[ i ] = uniform( 1.0 + EPS, 100.0 );
298+
}
253299

254300
b.tic();
255301
for ( i = 0; i < b.iterations; i++ ) {
256-
dist.mu = ( 100.0*randu() ) + 1.0 + EPS;
302+
dist.mu = x[ i % len ];
257303
y = dist.mode;
258304
if ( isnan( y ) ) {
259305
b.fail( 'should not return NaN' );
@@ -269,18 +315,24 @@ bench( pkg+':mode', function benchmark( b ) {
269315

270316
bench( pkg+':stdev', function benchmark( b ) {
271317
var dist;
318+
var len;
272319
var mu;
273320
var c;
321+
var x;
274322
var y;
275323
var i;
276324

277325
mu = 2.0;
278326
c = 3.0;
327+
len = 100;
328+
x = new Float64Array( len );
279329
dist = new Levy( mu, c );
280-
330+
for ( i = 0; i < len; i++ ) {
331+
x[ i ] = uniform( EPS, 100.0 );
332+
}
281333
b.tic();
282334
for ( i = 0; i < b.iterations; i++ ) {
283-
dist.mu = ( 100.0*randu() ) + EPS;
335+
dist.mu = x[ i % len ];
284336
y = dist.stdev;
285337
if ( isnan( y ) ) {
286338
b.fail( 'should not return NaN' );
@@ -296,18 +348,25 @@ bench( pkg+':stdev', function benchmark( b ) {
296348

297349
bench( pkg+':variance', function benchmark( b ) {
298350
var dist;
351+
var len;
299352
var mu;
300353
var c;
354+
var x;
301355
var y;
302356
var i;
303357

304358
mu = 2.0;
305359
c = 3.0;
360+
len = 100;
361+
x = new Float64Array( len );
306362
dist = new Levy( mu, c );
363+
for ( i = 0; i < len; i++ ) {
364+
x[ i ] = uniform( EPS, 100.0 );
365+
}
307366

308367
b.tic();
309368
for ( i = 0; i < b.iterations; i++ ) {
310-
dist.mu = ( 100.0*randu() ) + EPS;
369+
dist.mu = x[ i % len ];
311370
y = dist.variance;
312371
if ( isnan( y ) ) {
313372
b.fail( 'should not return NaN' );
@@ -323,6 +382,7 @@ bench( pkg+':variance', function benchmark( b ) {
323382

324383
bench( pkg+':cdf', function benchmark( b ) {
325384
var dist;
385+
var len;
326386
var mu;
327387
var c;
328388
var x;
@@ -331,12 +391,16 @@ bench( pkg+':cdf', function benchmark( b ) {
331391

332392
mu = 2.0;
333393
c = 3.0;
394+
len = 100;
395+
x = new Float64Array( len );
334396
dist = new Levy( mu, c );
397+
for ( i = 0; i < len; i++ ) {
398+
x[ i ] = uniform( -3.0, 6.0 );
399+
}
335400

336401
b.tic();
337402
for ( i = 0; i < b.iterations; i++ ) {
338-
x = ( randu()*6.0 ) - 3.0;
339-
y = dist.cdf( x );
403+
y = dist.cdf( x[ i % len ] );
340404
if ( isnan( y ) ) {
341405
b.fail( 'should not return NaN' );
342406
}
@@ -351,6 +415,7 @@ bench( pkg+':cdf', function benchmark( b ) {
351415

352416
bench( pkg+':logpdf', function benchmark( b ) {
353417
var dist;
418+
var len;
354419
var mu;
355420
var c;
356421
var x;
@@ -359,12 +424,16 @@ bench( pkg+':logpdf', function benchmark( b ) {
359424

360425
mu = 1.0;
361426
c = 2.0;
427+
len = 100;
428+
x = new Float64Array( len );
362429
dist = new Levy( mu, c );
430+
for ( i = 0; i < len; i++ ) {
431+
x[ i ] = uniform( -3.0, 6.0 );
432+
}
363433

364434
b.tic();
365435
for ( i = 0; i < b.iterations; i++ ) {
366-
x = ( randu()*6.0 ) - 3.0;
367-
y = dist.logpdf( x );
436+
y = dist.logpdf( x[ i % len ] );
368437
if ( isnan( y ) ) {
369438
b.fail( 'should not return NaN' );
370439
}
@@ -379,6 +448,7 @@ bench( pkg+':logpdf', function benchmark( b ) {
379448

380449
bench( pkg+':pdf', function benchmark( b ) {
381450
var dist;
451+
var len;
382452
var mu;
383453
var c;
384454
var x;
@@ -387,12 +457,16 @@ bench( pkg+':pdf', function benchmark( b ) {
387457

388458
mu = 2.0;
389459
c = 3.0;
460+
len = 100;
461+
x = new Float64Array( len );
390462
dist = new Levy( mu, c );
463+
for ( i = 0; i < len; i++ ) {
464+
x[ i ] = uniform( -3.0, 6.0 );
465+
}
391466

392467
b.tic();
393468
for ( i = 0; i < b.iterations; i++ ) {
394-
x = ( randu()*6.0 ) - 3.0;
395-
y = dist.pdf( x );
469+
y = dist.pdf( x[ i % len ] );
396470
if ( isnan( y ) ) {
397471
b.fail( 'should not return NaN' );
398472
}
@@ -407,6 +481,7 @@ bench( pkg+':pdf', function benchmark( b ) {
407481

408482
bench( pkg+':quantile', function benchmark( b ) {
409483
var dist;
484+
var len;
410485
var mu;
411486
var c;
412487
var x;
@@ -415,12 +490,16 @@ bench( pkg+':quantile', function benchmark( b ) {
415490

416491
mu = 2.0;
417492
c = 3.0;
493+
len = 100;
494+
x = new Float64Array( len );
418495
dist = new Levy( mu, c );
496+
for ( i = 0; i < len; i++ ) {
497+
x[ i ] = uniform( 0.0, 1.0 );
498+
}
419499

420500
b.tic();
421501
for ( i = 0; i < b.iterations; i++ ) {
422-
x = randu();
423-
y = dist.quantile( x );
502+
y = dist.quantile( x[ i % len ] );
424503
if ( isnan( y ) ) {
425504
b.fail( 'should not return NaN' );
426505
}

0 commit comments

Comments
 (0)