Skip to content

Commit 8b38de5

Browse files
committed
Add async groupBy utility
1 parent f0a4510 commit 8b38de5

File tree

15 files changed

+3872
-0
lines changed

15 files changed

+3872
-0
lines changed

lib/node_modules/@stdlib/utils/group-by-async/README.md

Lines changed: 440 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
'use strict';
2+
3+
// MODULES //
4+
5+
var bench = require( '@stdlib/bench' );
6+
var pkg = require( './../package.json' ).name;
7+
var factory = require( './../lib/factory.js' );
8+
9+
10+
// MAIN //
11+
12+
bench( pkg+':factory', function benchmark( b ) {
13+
var groupByAsync;
14+
var arr;
15+
var i;
16+
17+
arr = [ 1, 2, 3, 4, 5 ];
18+
19+
function indicator( value, index, clbk ) {
20+
setTimeout( onTimeout, 0 );
21+
function onTimeout() {
22+
clbk( null, (index%2 === 0) );
23+
}
24+
}
25+
26+
groupByAsync = factory( indicator );
27+
28+
i = 0;
29+
b.tic();
30+
31+
return next();
32+
33+
function next( error ) {
34+
i += 1;
35+
if ( error ) {
36+
b.fail( 'should not return an error' );
37+
}
38+
if ( i <= b.iterations ) {
39+
return groupByAsync( arr, next );
40+
}
41+
b.toc();
42+
b.pass( 'benchmark finished' );
43+
b.end();
44+
}
45+
});
Lines changed: 222 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,222 @@
1+
'use strict';
2+
3+
// MODULES //
4+
5+
var bench = require( '@stdlib/bench' );
6+
var pkg = require( './../package.json' ).name;
7+
var groupByAsync = require( './../lib' );
8+
9+
10+
// MAIN //
11+
12+
bench( pkg, function benchmark( b ) {
13+
var arr;
14+
var i;
15+
16+
arr = [ 1, 2, 3, 4, 5 ];
17+
18+
function indicator( value, index, clbk ) {
19+
setTimeout( onTimeout, 0 );
20+
function onTimeout() {
21+
clbk( null, (index%2 === 0) );
22+
}
23+
}
24+
25+
i = 0;
26+
b.tic();
27+
28+
return next();
29+
30+
function next( error ) {
31+
i += 1;
32+
if ( error ) {
33+
b.fail( 'should not return an error' );
34+
}
35+
if ( i <= b.iterations ) {
36+
return groupByAsync( arr, indicator, next );
37+
}
38+
b.toc();
39+
b.pass( 'benchmark finished' );
40+
b.end();
41+
}
42+
});
43+
44+
bench( pkg+':returns=values', function benchmark( b ) {
45+
var opts;
46+
var arr;
47+
var i;
48+
49+
opts = {
50+
'returns': 'values'
51+
};
52+
arr = [ 1, 2, 3, 4, 5 ];
53+
54+
function indicator( value, index, clbk ) {
55+
setTimeout( onTimeout, 0 );
56+
function onTimeout() {
57+
clbk( null, (index%2 === 0) );
58+
}
59+
}
60+
61+
i = 0;
62+
b.tic();
63+
64+
return next();
65+
66+
function next( error ) {
67+
i += 1;
68+
if ( error ) {
69+
b.fail( 'should not return an error' );
70+
}
71+
if ( i <= b.iterations ) {
72+
return groupByAsync( arr, opts, indicator, next );
73+
}
74+
b.toc();
75+
b.pass( 'benchmark finished' );
76+
b.end();
77+
}
78+
});
79+
80+
bench( pkg+':returns=indices', function benchmark( b ) {
81+
var opts;
82+
var arr;
83+
var i;
84+
85+
opts = {
86+
'returns': 'indices'
87+
};
88+
arr = [ 1, 2, 3, 4, 5 ];
89+
90+
function indicator( value, index, clbk ) {
91+
setTimeout( onTimeout, 0 );
92+
function onTimeout() {
93+
clbk( null, (index%2 === 0) );
94+
}
95+
}
96+
97+
i = 0;
98+
b.tic();
99+
100+
return next();
101+
102+
function next( error ) {
103+
i += 1;
104+
if ( error ) {
105+
b.fail( 'should not return an error' );
106+
}
107+
if ( i <= b.iterations ) {
108+
return groupByAsync( arr, opts, indicator, next );
109+
}
110+
b.toc();
111+
b.pass( 'benchmark finished' );
112+
b.end();
113+
}
114+
});
115+
116+
bench( pkg+':returns=*', function benchmark( b ) {
117+
var opts;
118+
var arr;
119+
var i;
120+
121+
opts = {
122+
'returns': '*'
123+
};
124+
arr = [ 1, 2, 3, 4, 5 ];
125+
126+
function indicator( value, index, clbk ) {
127+
setTimeout( onTimeout, 0 );
128+
function onTimeout() {
129+
clbk( null, (index%2 === 0) );
130+
}
131+
}
132+
133+
i = 0;
134+
b.tic();
135+
136+
return next();
137+
138+
function next( error ) {
139+
i += 1;
140+
if ( error ) {
141+
b.fail( 'should not return an error' );
142+
}
143+
if ( i <= b.iterations ) {
144+
return groupByAsync( arr, opts, indicator, next );
145+
}
146+
b.toc();
147+
b.pass( 'benchmark finished' );
148+
b.end();
149+
}
150+
});
151+
152+
bench( pkg+':series=true', function benchmark( b ) {
153+
var opts;
154+
var arr;
155+
var i;
156+
157+
opts = {
158+
'series': true
159+
};
160+
arr = [ 1, 2, 3, 4, 5 ];
161+
162+
function indicator( value, index, clbk ) {
163+
setTimeout( onTimeout, 0 );
164+
function onTimeout() {
165+
clbk( null, (index%2 === 0) );
166+
}
167+
}
168+
169+
i = 0;
170+
b.tic();
171+
172+
return next();
173+
174+
function next( error ) {
175+
i += 1;
176+
if ( error ) {
177+
b.fail( 'should not return an error' );
178+
}
179+
if ( i <= b.iterations ) {
180+
return groupByAsync( arr, opts, indicator, next );
181+
}
182+
b.toc();
183+
b.pass( 'benchmark finished' );
184+
b.end();
185+
}
186+
});
187+
188+
bench( pkg+':limit=3', function benchmark( b ) {
189+
var opts;
190+
var arr;
191+
var i;
192+
193+
opts = {
194+
'limit': 3
195+
};
196+
arr = [ 1, 2, 3, 4, 5 ];
197+
198+
function indicator( value, index, clbk ) {
199+
setTimeout( onTimeout, 0 );
200+
function onTimeout() {
201+
clbk( null, (index%2 === 0) );
202+
}
203+
}
204+
205+
i = 0;
206+
b.tic();
207+
208+
return next();
209+
210+
function next( error ) {
211+
i += 1;
212+
if ( error ) {
213+
b.fail( 'should not return an error' );
214+
}
215+
if ( i <= b.iterations ) {
216+
return groupByAsync( arr, opts, indicator, next );
217+
}
218+
b.toc();
219+
b.pass( 'benchmark finished' );
220+
b.end();
221+
}
222+
});

0 commit comments

Comments
 (0)