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 ' ) ;
25+ var bernoulli = require ( '@stdlib/random/array/bernoulli ' ) ;
2626var isArray = require ( '@stdlib/assert/is-array' ) ;
2727var format = require ( '@stdlib/string/format' ) ;
2828var pkg = require ( './../package.json' ) . name ;
@@ -35,27 +35,21 @@ bench( pkg, function benchmark( b ) {
3535 var filter ;
3636 var vals ;
3737 var arr ;
38- var len ;
3938 var o ;
4039 var i ;
41- var j ;
4240
4341 vals = [ 'a' , 'b' , 'c' , 'd' , 'e' ] ;
4442
45- arr = new Array ( 100 ) ;
46- len = arr . length ;
47- for ( i = 0 ; i < len ; i ++ ) {
48- j = floor ( randu ( ) * vals . length ) ;
49- arr [ i ] = vals [ j ] ;
50- }
51- filter = new Array ( len ) ;
43+ arr = discreteUniform ( 100 , 0 , vals . length - 1 ) ;
44+ filter = [
45+ bernoulli ( 100 , 0.5 ) ,
46+ bernoulli ( 100 , 0.5 ) ,
47+ bernoulli ( 100 , 0.5 )
48+ ] ;
5249
5350 b . tic ( ) ;
5451 for ( i = 0 ; i < b . iterations ; i ++ ) {
55- for ( j = 0 ; j < len ; j ++ ) {
56- filter [ j ] = ( randu ( ) < 0.5 ) ;
57- }
58- o = bifurcate ( arr , filter ) ;
52+ o = bifurcate ( arr , filter [ i % filter . length ] ) ;
5953 if ( typeof o !== 'object' ) {
6054 b . fail ( 'should return an array' ) ;
6155 }
@@ -73,30 +67,24 @@ bench( format( '%s::values', pkg ), function benchmark( b ) {
7367 var opts ;
7468 var vals ;
7569 var arr ;
76- var len ;
7770 var o ;
7871 var i ;
79- var j ;
8072
8173 vals = [ 'a' , 'b' , 'c' , 'd' , 'e' ] ;
8274
8375 opts = {
8476 'returns' : 'values'
8577 } ;
86- arr = new Array ( 100 ) ;
87- len = arr . length ;
88- for ( i = 0 ; i < len ; i ++ ) {
89- j = floor ( randu ( ) * vals . length ) ;
90- arr [ i ] = vals [ j ] ;
91- }
92- filter = new Array ( len ) ;
78+ arr = discreteUniform ( 100 , 0 , vals . length - 1 ) ;
79+ filter = [
80+ bernoulli ( 100 , 0.5 ) ,
81+ bernoulli ( 100 , 0.5 ) ,
82+ bernoulli ( 100 , 0.5 )
83+ ] ;
9384
9485 b . tic ( ) ;
9586 for ( i = 0 ; i < b . iterations ; i ++ ) {
96- for ( j = 0 ; j < len ; j ++ ) {
97- filter [ j ] = ( randu ( ) < 0.5 ) ;
98- }
99- o = bifurcate ( arr , opts , filter ) ;
87+ o = bifurcate ( arr , opts , filter [ i % filter . length ] ) ;
10088 if ( typeof o !== 'object' ) {
10189 b . fail ( 'should return an array' ) ;
10290 }
@@ -114,30 +102,24 @@ bench( format( '%s::indices', pkg ), function benchmark( b ) {
114102 var opts ;
115103 var vals ;
116104 var arr ;
117- var len ;
118105 var o ;
119106 var i ;
120- var j ;
121107
122108 vals = [ 'a' , 'b' , 'c' , 'd' , 'e' ] ;
123109
124110 opts = {
125111 'returns' : 'indices'
126112 } ;
127- arr = new Array ( 100 ) ;
128- len = arr . length ;
129- for ( i = 0 ; i < len ; i ++ ) {
130- j = floor ( randu ( ) * vals . length ) ;
131- arr [ i ] = vals [ j ] ;
132- }
133- filter = new Array ( len ) ;
113+ arr = discreteUniform ( 100 , 0 , vals . length - 1 ) ;
114+ filter = [
115+ bernoulli ( 100 , 0.5 ) ,
116+ bernoulli ( 100 , 0.5 ) ,
117+ bernoulli ( 100 , 0.5 )
118+ ] ;
134119
135120 b . tic ( ) ;
136121 for ( i = 0 ; i < b . iterations ; i ++ ) {
137- for ( j = 0 ; j < len ; j ++ ) {
138- filter [ j ] = ( randu ( ) < 0.5 ) ;
139- }
140- o = bifurcate ( arr , opts , filter ) ;
122+ o = bifurcate ( arr , opts , filter [ i % filter . length ] ) ;
141123 if ( typeof o !== 'object' ) {
142124 b . fail ( 'should return an array' ) ;
143125 }
@@ -155,30 +137,24 @@ bench( format( '%s::pairs', pkg ), function benchmark( b ) {
155137 var opts ;
156138 var vals ;
157139 var arr ;
158- var len ;
159140 var o ;
160141 var i ;
161- var j ;
162142
163143 vals = [ 'a' , 'b' , 'c' , 'd' , 'e' ] ;
164144
165145 opts = {
166146 'returns' : '*'
167147 } ;
168- arr = new Array ( 100 ) ;
169- len = arr . length ;
170- for ( i = 0 ; i < len ; i ++ ) {
171- j = floor ( randu ( ) * vals . length ) ;
172- arr [ i ] = vals [ j ] ;
173- }
174- filter = new Array ( len ) ;
148+ arr = discreteUniform ( 100 , 0 , vals . length - 1 ) ;
149+ filter = [
150+ bernoulli ( 100 , 0.5 ) ,
151+ bernoulli ( 100 , 0.5 ) ,
152+ bernoulli ( 100 , 0.5 )
153+ ] ;
175154
176155 b . tic ( ) ;
177156 for ( i = 0 ; i < b . iterations ; i ++ ) {
178- for ( j = 0 ; j < len ; j ++ ) {
179- filter [ j ] = ( randu ( ) < 0.5 ) ;
180- }
181- o = bifurcate ( arr , opts , filter ) ;
157+ o = bifurcate ( arr , opts , filter [ i % filter . length ] ) ;
182158 if ( typeof o !== 'object' ) {
183159 b . fail ( 'should return an array' ) ;
184160 }
0 commit comments