44
55var bench = require ( '@stdlib/bench' ) ;
66var isnan = require ( '@stdlib/math/base/assert/is-nan' ) ;
7+ var randu = require ( '@stdlib/random/base/randu' ) ;
8+ var floor = require ( '@stdlib/math/base/special/floor' ) ;
9+ var isBoolean = require ( '@stdlib/assert/is-boolean' ) . isPrimitive ;
710var tryRequire = require ( '@stdlib/utils/try-require' ) ;
811var pkg = require ( './../package.json' ) . name ;
912
@@ -18,7 +21,95 @@ var opts = {
1821
1922// MAIN //
2023
21- bench ( pkg + '::lodash:each' , opts , function benchmark ( b ) {
24+ bench ( pkg + '::lodash:countBy' , opts , function benchmark ( b ) {
25+ var vals ;
26+ var arr ;
27+ var len ;
28+ var o ;
29+ var i ;
30+ var j ;
31+
32+ function indicator ( v ) {
33+ return v [ 0 ] ;
34+ }
35+
36+ vals = [ 'beep' , 'boop' , 'foo' , 'bar' , 'woot' ] ;
37+
38+ arr = new Array ( 100 ) ;
39+ len = arr . length ;
40+ for ( i = 0 ; i < len ; i ++ ) {
41+ j = floor ( randu ( ) * vals . length ) ;
42+ arr [ i ] = vals [ j ] ;
43+ }
44+ b . tic ( ) ;
45+ for ( i = 0 ; i < b . iterations ; i ++ ) {
46+ j = floor ( randu ( ) * vals . length ) ;
47+ arr [ 0 ] = vals [ j ] ;
48+ o = _ . countBy ( arr , indicator ) ;
49+ if ( typeof o !== 'object' ) {
50+ b . fail ( 'should return an object' ) ;
51+ }
52+ }
53+ b . toc ( ) ;
54+ if ( typeof o !== 'object' ) {
55+ b . fail ( 'should return an object' ) ;
56+ }
57+ b . pass ( 'benchmark finished' ) ;
58+ b . end ( ) ;
59+ } ) ;
60+
61+ bench ( pkg + '::lodash:every' , opts , function benchmark ( b ) {
62+ var bool ;
63+ var arr ;
64+ var i ;
65+
66+ function predicate ( v ) {
67+ return ! isnan ( v ) ;
68+ }
69+
70+ b . tic ( ) ;
71+ for ( i = 0 ; i < b . iterations ; i ++ ) {
72+ arr = [ i , i + 1 , i + 2 , i + 3 , i + 4 ] ;
73+ bool = _ . every ( arr , predicate ) ;
74+ if ( ! isBoolean ( bool ) ) {
75+ b . fail ( 'should return a boolean' ) ;
76+ }
77+ }
78+ b . toc ( ) ;
79+ if ( ! isBoolean ( bool ) ) {
80+ b . fail ( 'should return a boolean' ) ;
81+ }
82+ b . pass ( 'benchmark finished' ) ;
83+ b . end ( ) ;
84+ } ) ;
85+
86+ bench ( pkg + '::lodash:forEach' , opts , function benchmark ( b ) {
87+ var arr ;
88+ var i ;
89+
90+ function onItem ( v ) {
91+ if ( isnan ( v ) ) {
92+ b . fail ( 'should not be NaN' ) ;
93+ }
94+ }
95+
96+ b . tic ( ) ;
97+ for ( i = 0 ; i < b . iterations ; i ++ ) {
98+ arr = [ i , i + 1 , i + 2 , i + 3 , i + 4 ] ;
99+ _ . forEach ( arr , onItem ) ;
100+ if ( arr . length !== 5 ) {
101+ b . fail ( 'should not change the array length' ) ;
102+ }
103+ }
104+ b . toc ( ) ;
105+ if ( arr . length !== 5 ) {
106+ b . fail ( 'should not change the array length' ) ;
107+ }
108+ b . pass ( 'benchmark finished' ) ;
109+ b . end ( ) ;
110+ } ) ;
111+
112+ bench ( pkg + '::lodash:forEachRight' , opts , function benchmark ( b ) {
22113 var arr ;
23114 var i ;
24115
@@ -31,7 +122,7 @@ bench( pkg+'::lodash:each', opts, function benchmark( b ) {
31122 b . tic ( ) ;
32123 for ( i = 0 ; i < b . iterations ; i ++ ) {
33124 arr = [ i , i + 1 , i + 2 , i + 3 , i + 4 ] ;
34- _ . each ( arr , onItem ) ;
125+ _ . forEachRight ( arr , onItem ) ;
35126 if ( arr . length !== 5 ) {
36127 b . fail ( 'should not change the array length' ) ;
37128 }
0 commit comments