Skip to content

Commit 286e9e2

Browse files
committed
Add benchmarks
1 parent 2d6960c commit 286e9e2

1 file changed

Lines changed: 93 additions & 2 deletions

File tree

docs/migration-guides/lodash/benchmark/benchmark.js

Lines changed: 93 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44

55
var bench = require( '@stdlib/bench' );
66
var 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;
710
var tryRequire = require( '@stdlib/utils/try-require' );
811
var 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

Comments
 (0)