Skip to content

Commit 5cfee64

Browse files
committed
Add benchmarks
1 parent 59986c3 commit 5cfee64

File tree

1 file changed

+197
-0
lines changed

1 file changed

+197
-0
lines changed

lib/node_modules/@stdlib/proxy/ctor/benchmark/benchmark.js

Lines changed: 197 additions & 0 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 randu = require( '@stdlib/random/base/randu' );
2526
var pkg = require( './../package.json' ).name;
2627
var Proxy = require( './../lib' );
@@ -94,6 +95,41 @@ bench( pkg+'::array,proxy,get', function benchmark( b ) {
9495
}
9596
});
9697

98+
bench( pkg+'::typed_array,proxy,get', function benchmark( b ) {
99+
var handlers;
100+
var arr;
101+
var N;
102+
var v;
103+
var i;
104+
105+
handlers = {
106+
'get': get
107+
};
108+
109+
arr = new Float64Array( 10 );
110+
arr = new Proxy( arr, handlers );
111+
N = arr.length;
112+
113+
b.tic();
114+
for ( i = 0; i < b.iterations; i++ ) {
115+
arr[ i%N ] = randu();
116+
v = arr[ 0 ];
117+
if ( v !== v ) {
118+
b.fail( 'should not return NaN' );
119+
}
120+
}
121+
b.toc();
122+
if ( v !== v ) {
123+
b.fail( 'should not return NaN' );
124+
}
125+
b.pass( 'benchmark finished' );
126+
b.end();
127+
128+
function get( obj, prop ) {
129+
return obj[ prop ];
130+
}
131+
});
132+
97133
bench( pkg+'::array,proxy,no_handlers,get', function benchmark( b ) {
98134
var handlers;
99135
var arr;
@@ -126,6 +162,36 @@ bench( pkg+'::array,proxy,no_handlers,get', function benchmark( b ) {
126162
b.end();
127163
});
128164

165+
bench( pkg+'::typed_array,proxy,no_handlers,get', function benchmark( b ) {
166+
var handlers;
167+
var arr;
168+
var N;
169+
var v;
170+
var i;
171+
172+
handlers = {};
173+
174+
arr = new Float64Array( 10 );
175+
N = arr.length;
176+
177+
arr = new Proxy( arr, handlers );
178+
179+
b.tic();
180+
for ( i = 0; i < b.iterations; i++ ) {
181+
arr[ i%N ] = randu();
182+
v = arr[ 0 ];
183+
if ( v !== v ) {
184+
b.fail( 'should not return NaN' );
185+
}
186+
}
187+
b.toc();
188+
if ( v !== v ) {
189+
b.fail( 'should not return NaN' );
190+
}
191+
b.pass( 'benchmark finished' );
192+
b.end();
193+
});
194+
129195
bench( pkg+'::array,no_proxy,get', function benchmark( b ) {
130196
var arr;
131197
var N;
@@ -154,6 +220,31 @@ bench( pkg+'::array,no_proxy,get', function benchmark( b ) {
154220
b.end();
155221
});
156222

223+
bench( pkg+'::typed_array,no_proxy,get', function benchmark( b ) {
224+
var arr;
225+
var N;
226+
var v;
227+
var i;
228+
229+
arr = new Float64Array( 10 );
230+
N = arr.length;
231+
232+
b.tic();
233+
for ( i = 0; i < b.iterations; i++ ) {
234+
arr[ i%N ] = randu();
235+
v = arr[ 0 ];
236+
if ( v !== v ) {
237+
b.fail( 'should not return NaN' );
238+
}
239+
}
240+
b.toc();
241+
if ( v !== v ) {
242+
b.fail( 'should not return NaN' );
243+
}
244+
b.pass( 'benchmark finished' );
245+
b.end();
246+
});
247+
157248
bench( pkg+'::array,no_proxy,getter', function benchmark( b ) {
158249
var arr;
159250
var N;
@@ -188,6 +279,36 @@ bench( pkg+'::array,no_proxy,getter', function benchmark( b ) {
188279
}
189280
});
190281

282+
bench( pkg+'::typed_array,no_proxy,getter', function benchmark( b ) {
283+
var arr;
284+
var N;
285+
var v;
286+
var i;
287+
288+
arr = new Float64Array( 10 );
289+
arr.get = get;
290+
N = arr.length;
291+
292+
b.tic();
293+
for ( i = 0; i < b.iterations; i++ ) {
294+
arr[ i%N ] = randu();
295+
v = arr.get( 0 );
296+
if ( v !== v ) {
297+
b.fail( 'should not return NaN' );
298+
}
299+
}
300+
b.toc();
301+
if ( v !== v ) {
302+
b.fail( 'should not return NaN' );
303+
}
304+
b.pass( 'benchmark finished' );
305+
b.end();
306+
307+
function get( i ) {
308+
return this[ i ]; // eslint-disable-line no-invalid-this
309+
}
310+
});
311+
191312
bench( pkg+'::array,proxy,no_handlers,getter', function benchmark( b ) {
192313
var handlers;
193314
var arr;
@@ -227,6 +348,41 @@ bench( pkg+'::array,proxy,no_handlers,getter', function benchmark( b ) {
227348
}
228349
});
229350

351+
bench( pkg+'::typed_array,proxy,no_handlers,getter', function benchmark( b ) {
352+
var handlers;
353+
var arr;
354+
var N;
355+
var v;
356+
var i;
357+
358+
handlers = {};
359+
360+
arr = new Float64Array( 10 );
361+
arr.get = get;
362+
N = arr.length;
363+
364+
arr = new Proxy( arr, handlers );
365+
366+
b.tic();
367+
for ( i = 0; i < b.iterations; i++ ) {
368+
arr[ i%N ] = randu();
369+
v = arr.get( 0 );
370+
if ( v !== v ) {
371+
b.fail( 'should not return NaN' );
372+
}
373+
}
374+
b.toc();
375+
if ( v !== v ) {
376+
b.fail( 'should not return NaN' );
377+
}
378+
b.pass( 'benchmark finished' );
379+
b.end();
380+
381+
function get( i ) {
382+
return this[ i ]; // eslint-disable-line no-invalid-this
383+
}
384+
});
385+
230386
bench( pkg+'::array,proxy,getter', function benchmark( b ) {
231387
var handlers;
232388
var arr;
@@ -271,3 +427,44 @@ bench( pkg+'::array,proxy,getter', function benchmark( b ) {
271427
return this[ i ]; // eslint-disable-line no-invalid-this
272428
}
273429
});
430+
431+
bench( pkg+'::typed_array,proxy,getter', function benchmark( b ) {
432+
var handlers;
433+
var arr;
434+
var N;
435+
var v;
436+
var i;
437+
438+
handlers = {
439+
'get': handler
440+
};
441+
442+
arr = new Float64Array( 10 );
443+
arr.get = get;
444+
445+
arr = new Proxy( arr, handlers );
446+
N = arr.length;
447+
448+
b.tic();
449+
for ( i = 0; i < b.iterations; i++ ) {
450+
arr[ i%N ] = randu();
451+
v = arr.get( 0 );
452+
if ( v !== v ) {
453+
b.fail( 'should not return NaN' );
454+
}
455+
}
456+
b.toc();
457+
if ( v !== v ) {
458+
b.fail( 'should not return NaN' );
459+
}
460+
b.pass( 'benchmark finished' );
461+
b.end();
462+
463+
function handler( obj, prop ) {
464+
return obj[ prop ];
465+
}
466+
467+
function get( i ) {
468+
return this[ i ]; // eslint-disable-line no-invalid-this
469+
}
470+
});

0 commit comments

Comments
 (0)