2121// MODULES //
2222
2323var bench = require ( '@stdlib/bench' ) ;
24- var randu = require ( '@stdlib/random/base/randu' ) ;
25- var floor = require ( '@stdlib/math/base/special/floor' ) ;
24+ var discreteUniform = require ( '@stdlib/random/array/discrete-uniform' ) ;
2625var pkg = require ( './../package.json' ) . name ;
2726var groupBy = require ( './../lib' ) ;
2827
@@ -32,27 +31,21 @@ var groupBy = require( './../lib' );
3231bench ( pkg , function benchmark ( b ) {
3332 var vals ;
3433 var arr ;
35- var len ;
3634 var o ;
3735 var i ;
38- var j ;
3936
4037 function indicator ( v ) {
4138 return v [ 0 ] ;
4239 }
4340
4441 vals = [ 'beep' , 'boop' , 'foo' , 'bar' , 'woot' ] ;
4542
46- arr = new Array ( 100 ) ;
47- len = arr . length ;
48- for ( i = 0 ; i < len ; i ++ ) {
49- j = floor ( randu ( ) * vals . length ) ;
50- arr [ i ] = vals [ j ] ;
51- }
43+ arr = discreteUniform ( 100 , 0 , vals . length - 1 , {
44+ 'dtype' : 'generic'
45+ } ) ;
5246 b . tic ( ) ;
5347 for ( i = 0 ; i < b . iterations ; i ++ ) {
54- j = floor ( randu ( ) * vals . length ) ;
55- arr [ 0 ] = vals [ j ] ;
48+ arr [ 0 ] = i % vals . length ;
5649 o = groupBy ( arr , indicator ) ;
5750 if ( typeof o !== 'object' ) {
5851 b . fail ( 'should return an object' ) ;
@@ -70,10 +63,8 @@ bench( pkg+'::values', function benchmark( b ) {
7063 var opts ;
7164 var vals ;
7265 var arr ;
73- var len ;
7466 var o ;
7567 var i ;
76- var j ;
7768
7869 function indicator ( v ) {
7970 return v [ 0 ] ;
@@ -84,16 +75,12 @@ bench( pkg+'::values', function benchmark( b ) {
8475 opts = {
8576 'returns' : 'values'
8677 } ;
87- arr = new Array ( 100 ) ;
88- len = arr . length ;
89- for ( i = 0 ; i < len ; i ++ ) {
90- j = floor ( randu ( ) * vals . length ) ;
91- arr [ i ] = vals [ j ] ;
92- }
78+ arr = discreteUniform ( 100 , 0 , vals . length - 1 , {
79+ 'dtype' : 'generic'
80+ } ) ;
9381 b . tic ( ) ;
9482 for ( i = 0 ; i < b . iterations ; i ++ ) {
95- j = floor ( randu ( ) * vals . length ) ;
96- arr [ 0 ] = vals [ j ] ;
83+ arr [ 0 ] = i % vals . length ;
9784 o = groupBy ( arr , opts , indicator ) ;
9885 if ( typeof o !== 'object' ) {
9986 b . fail ( 'should return an object' ) ;
@@ -111,10 +98,8 @@ bench( pkg+'::indices', function benchmark( b ) {
11198 var opts ;
11299 var vals ;
113100 var arr ;
114- var len ;
115101 var o ;
116102 var i ;
117- var j ;
118103
119104 function indicator ( v ) {
120105 return v [ 0 ] ;
@@ -125,16 +110,12 @@ bench( pkg+'::indices', function benchmark( b ) {
125110 opts = {
126111 'returns' : 'indices'
127112 } ;
128- arr = new Array ( 100 ) ;
129- len = arr . length ;
130- for ( i = 0 ; i < len ; i ++ ) {
131- j = floor ( randu ( ) * vals . length ) ;
132- arr [ i ] = vals [ j ] ;
133- }
113+ arr = discreteUniform ( 100 , 0 , vals . length - 1 , {
114+ 'dtype' : 'generic'
115+ } ) ;
134116 b . tic ( ) ;
135117 for ( i = 0 ; i < b . iterations ; i ++ ) {
136- j = floor ( randu ( ) * vals . length ) ;
137- arr [ 0 ] = vals [ j ] ;
118+ arr [ 0 ] = i % vals . length ;
138119 o = groupBy ( arr , opts , indicator ) ;
139120 if ( typeof o !== 'object' ) {
140121 b . fail ( 'should return an object' ) ;
@@ -152,10 +133,8 @@ bench( pkg+'::pairs', function benchmark( b ) {
152133 var opts ;
153134 var vals ;
154135 var arr ;
155- var len ;
156136 var o ;
157137 var i ;
158- var j ;
159138
160139 function indicator ( v ) {
161140 return v [ 0 ] ;
@@ -166,16 +145,12 @@ bench( pkg+'::pairs', function benchmark( b ) {
166145 opts = {
167146 'returns' : '*'
168147 } ;
169- arr = new Array ( 100 ) ;
170- len = arr . length ;
171- for ( i = 0 ; i < len ; i ++ ) {
172- j = floor ( randu ( ) * vals . length ) ;
173- arr [ i ] = vals [ j ] ;
174- }
148+ arr = discreteUniform ( 100 , 0 , vals . length - 1 , {
149+ 'dtype' : 'generic'
150+ } ) ;
175151 b . tic ( ) ;
176152 for ( i = 0 ; i < b . iterations ; i ++ ) {
177- j = floor ( randu ( ) * vals . length ) ;
178- arr [ 0 ] = vals [ j ] ;
153+ arr [ 0 ] = i % vals . length ;
179154 o = groupBy ( arr , opts , indicator ) ;
180155 if ( typeof o !== 'object' ) {
181156 b . fail ( 'should return an object' ) ;
@@ -193,10 +168,8 @@ bench( pkg+'::this_context', function benchmark( b ) {
193168 var opts ;
194169 var vals ;
195170 var arr ;
196- var len ;
197171 var o ;
198172 var i ;
199- var j ;
200173
201174 function indicator ( v ) {
202175 return v [ 0 ] ;
@@ -207,16 +180,12 @@ bench( pkg+'::this_context', function benchmark( b ) {
207180 opts = {
208181 'thisArg' : { }
209182 } ;
210- arr = new Array ( 100 ) ;
211- len = arr . length ;
212- for ( i = 0 ; i < len ; i ++ ) {
213- j = floor ( randu ( ) * vals . length ) ;
214- arr [ i ] = vals [ j ] ;
215- }
183+ arr = discreteUniform ( 100 , 0 , vals . length - 1 , {
184+ 'dtype' : 'generic'
185+ } ) ;
216186 b . tic ( ) ;
217187 for ( i = 0 ; i < b . iterations ; i ++ ) {
218- j = floor ( randu ( ) * vals . length ) ;
219- arr [ 0 ] = vals [ j ] ;
188+ arr [ 0 ] = i % vals . length ;
220189 o = groupBy ( arr , opts , indicator ) ;
221190 if ( typeof o !== 'object' ) {
222191 b . fail ( 'should return an object' ) ;
0 commit comments