Skip to content

Commit 6039604

Browse files
committed
bench: refactor benchmarks by splitting across multiple files
This commit reorganizes benchmarks to allow for easier running of particular benchmark subsets (e.g., all `#.get` benchmarks, etc).
1 parent 82dea00 commit 6039604

File tree

9 files changed

+3041
-2785
lines changed

9 files changed

+3041
-2785
lines changed

lib/node_modules/@stdlib/ndarray/ctor/benchmark/benchmark.attributes.js

Lines changed: 655 additions & 0 deletions
Large diffs are not rendered by default.

lib/node_modules/@stdlib/ndarray/ctor/benchmark/benchmark.get.js

Lines changed: 588 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 344 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,344 @@
1+
/**
2+
* @license Apache-2.0
3+
*
4+
* Copyright (c) 2018 The Stdlib Authors.
5+
*
6+
* Licensed under the Apache License, Version 2.0 (the "License");
7+
* you may not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing, software
13+
* distributed under the License is distributed on an "AS IS" BASIS,
14+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*/
18+
19+
'use strict';
20+
21+
// MODULES //
22+
23+
var bench = require( '@stdlib/bench' );
24+
var pkg = require( './../package.json' ).name;
25+
var ndarray = require( './../lib' );
26+
27+
28+
// MAIN //
29+
30+
bench( pkg+'::1d:iget', function benchmark( b ) {
31+
var strides;
32+
var buffer;
33+
var offset;
34+
var shape;
35+
var order;
36+
var out;
37+
var v;
38+
var i;
39+
40+
buffer = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
41+
shape = [ 6 ];
42+
strides = [ 1 ];
43+
offset = 0;
44+
order = 'row-major';
45+
46+
out = ndarray( 'generic', buffer, shape, strides, offset, order );
47+
48+
b.tic();
49+
for ( i = 0; i < b.iterations; i++ ) {
50+
buffer[ 1 ] = i;
51+
v = out.iget( i%6 );
52+
if ( v !== v ) {
53+
b.fail( 'should not return NaN' );
54+
}
55+
}
56+
b.toc();
57+
if ( v !== v ) {
58+
b.fail( 'should not return NaN' );
59+
}
60+
b.pass( 'benchmark finished' );
61+
b.end();
62+
});
63+
64+
bench( pkg+'::1d:iget:mode=wrap', function benchmark( b ) {
65+
var strides;
66+
var buffer;
67+
var offset;
68+
var shape;
69+
var order;
70+
var opts;
71+
var out;
72+
var v;
73+
var i;
74+
75+
opts = {
76+
'mode': 'wrap'
77+
};
78+
79+
buffer = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
80+
shape = [ 6 ];
81+
strides = [ 1 ];
82+
offset = 0;
83+
order = 'row-major';
84+
85+
out = ndarray( 'generic', buffer, shape, strides, offset, order, opts );
86+
87+
b.tic();
88+
for ( i = 0; i < b.iterations; i++ ) {
89+
buffer[ 1 ] = i;
90+
v = out.iget( i%6 );
91+
if ( v !== v ) {
92+
b.fail( 'should not return NaN' );
93+
}
94+
}
95+
b.toc();
96+
if ( v !== v ) {
97+
b.fail( 'should not return NaN' );
98+
}
99+
b.pass( 'benchmark finished' );
100+
b.end();
101+
});
102+
103+
bench( pkg+'::1d:iget:mode=clamp', function benchmark( b ) {
104+
var strides;
105+
var buffer;
106+
var offset;
107+
var shape;
108+
var order;
109+
var opts;
110+
var out;
111+
var v;
112+
var i;
113+
114+
opts = {
115+
'mode': 'clamp'
116+
};
117+
118+
buffer = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
119+
shape = [ 6 ];
120+
strides = [ 1 ];
121+
offset = 0;
122+
order = 'row-major';
123+
124+
out = ndarray( 'generic', buffer, shape, strides, offset, order, opts );
125+
126+
b.tic();
127+
for ( i = 0; i < b.iterations; i++ ) {
128+
buffer[ 1 ] = i;
129+
v = out.iget( i%6 );
130+
if ( v !== v ) {
131+
b.fail( 'should not return NaN' );
132+
}
133+
}
134+
b.toc();
135+
if ( v !== v ) {
136+
b.fail( 'should not return NaN' );
137+
}
138+
b.pass( 'benchmark finished' );
139+
b.end();
140+
});
141+
142+
bench( pkg+'::2d,all_positive_strides:iget:order=row-major', function benchmark( b ) {
143+
var strides;
144+
var buffer;
145+
var offset;
146+
var shape;
147+
var order;
148+
var out;
149+
var v;
150+
var i;
151+
152+
buffer = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
153+
shape = [ 3, 2 ];
154+
strides = [ 2, 1 ];
155+
offset = 0;
156+
order = 'row-major';
157+
158+
out = ndarray( 'generic', buffer, shape, strides, offset, order );
159+
160+
b.tic();
161+
for ( i = 0; i < b.iterations; i++ ) {
162+
buffer[ 1 ] = i;
163+
v = out.iget( i%6 );
164+
if ( v !== v ) {
165+
b.fail( 'should not return NaN' );
166+
}
167+
}
168+
b.toc();
169+
if ( v !== v ) {
170+
b.fail( 'should not return NaN' );
171+
}
172+
b.pass( 'benchmark finished' );
173+
b.end();
174+
});
175+
176+
bench( pkg+'::2d,all_positive_strides:iget:order=column-major', function benchmark( b ) {
177+
var strides;
178+
var buffer;
179+
var offset;
180+
var shape;
181+
var order;
182+
var out;
183+
var v;
184+
var i;
185+
186+
buffer = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
187+
shape = [ 3, 2 ];
188+
strides = [ 2, 1 ];
189+
offset = 0;
190+
order = 'column-major';
191+
192+
out = ndarray( 'generic', buffer, shape, strides, offset, order );
193+
194+
b.tic();
195+
for ( i = 0; i < b.iterations; i++ ) {
196+
buffer[ 1 ] = i;
197+
v = out.iget( i%6 );
198+
if ( v !== v ) {
199+
b.fail( 'should not return NaN' );
200+
}
201+
}
202+
b.toc();
203+
if ( v !== v ) {
204+
b.fail( 'should not return NaN' );
205+
}
206+
b.pass( 'benchmark finished' );
207+
b.end();
208+
});
209+
210+
bench( pkg+'::2d,all_negative_strides:iget:order=row-major', function benchmark( b ) {
211+
var strides;
212+
var buffer;
213+
var offset;
214+
var shape;
215+
var order;
216+
var out;
217+
var v;
218+
var i;
219+
220+
buffer = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
221+
shape = [ 3, 2 ];
222+
strides = [ -2, -1 ];
223+
offset = 5;
224+
order = 'row-major';
225+
226+
out = ndarray( 'generic', buffer, shape, strides, offset, order );
227+
228+
b.tic();
229+
for ( i = 0; i < b.iterations; i++ ) {
230+
buffer[ 1 ] = i;
231+
v = out.iget( i%6 );
232+
if ( v !== v ) {
233+
b.fail( 'should not return NaN' );
234+
}
235+
}
236+
b.toc();
237+
if ( v !== v ) {
238+
b.fail( 'should not return NaN' );
239+
}
240+
b.pass( 'benchmark finished' );
241+
b.end();
242+
});
243+
244+
bench( pkg+'::2d,all_negative_strides:iget:order=column-major', function benchmark( b ) {
245+
var strides;
246+
var buffer;
247+
var offset;
248+
var shape;
249+
var order;
250+
var out;
251+
var v;
252+
var i;
253+
254+
buffer = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
255+
shape = [ 3, 2 ];
256+
strides = [ -2, -1 ];
257+
offset = 5;
258+
order = 'column-major';
259+
260+
out = ndarray( 'generic', buffer, shape, strides, offset, order );
261+
262+
b.tic();
263+
for ( i = 0; i < b.iterations; i++ ) {
264+
buffer[ 1 ] = i;
265+
v = out.iget( i%6 );
266+
if ( v !== v ) {
267+
b.fail( 'should not return NaN' );
268+
}
269+
}
270+
b.toc();
271+
if ( v !== v ) {
272+
b.fail( 'should not return NaN' );
273+
}
274+
b.pass( 'benchmark finished' );
275+
b.end();
276+
});
277+
278+
bench( pkg+'::2d,mixed_sign_strides:iget:order=row-major', function benchmark( b ) {
279+
var strides;
280+
var buffer;
281+
var offset;
282+
var shape;
283+
var order;
284+
var out;
285+
var v;
286+
var i;
287+
288+
buffer = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
289+
shape = [ 3, 2 ];
290+
strides = [ -2, 1 ];
291+
offset = 4;
292+
order = 'row-major';
293+
294+
out = ndarray( 'generic', buffer, shape, strides, offset, order );
295+
296+
b.tic();
297+
for ( i = 0; i < b.iterations; i++ ) {
298+
buffer[ 1 ] = i;
299+
v = out.iget( i%6 );
300+
if ( v !== v ) {
301+
b.fail( 'should not return NaN' );
302+
}
303+
}
304+
b.toc();
305+
if ( v !== v ) {
306+
b.fail( 'should not return NaN' );
307+
}
308+
b.pass( 'benchmark finished' );
309+
b.end();
310+
});
311+
312+
bench( pkg+'::2d,mixed_sign_strides:iget:order=column-major', function benchmark( b ) {
313+
var strides;
314+
var buffer;
315+
var offset;
316+
var shape;
317+
var order;
318+
var out;
319+
var v;
320+
var i;
321+
322+
buffer = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ];
323+
shape = [ 3, 2 ];
324+
strides = [ -2, 1 ];
325+
offset = 4;
326+
order = 'column-major';
327+
328+
out = ndarray( 'generic', buffer, shape, strides, offset, order );
329+
330+
b.tic();
331+
for ( i = 0; i < b.iterations; i++ ) {
332+
buffer[ 1 ] = i;
333+
v = out.iget( i%6 );
334+
if ( v !== v ) {
335+
b.fail( 'should not return NaN' );
336+
}
337+
}
338+
b.toc();
339+
if ( v !== v ) {
340+
b.fail( 'should not return NaN' );
341+
}
342+
b.pass( 'benchmark finished' );
343+
b.end();
344+
});

0 commit comments

Comments
 (0)