Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@

// MODULES //

var bench = require( '@stdlib/bench' );
var isArray = require( '@stdlib/assert/is-array' );
var floor = require( '@stdlib/math/base/special/floor' );
var randu = require( '@stdlib/random/base/randu' );
var pow = require( '@stdlib/math/base/special/pow' );
var bench = require('@stdlib/bench');
var isArray = require('@stdlib/assert/is-array');
var floor = require('@stdlib/math/base/special/floor');
var randu = require('@stdlib/random/base/randu');
var pow = require('@stdlib/math/base/special/pow');


// VARIABLES //
Expand All @@ -41,7 +41,7 @@ var NAME = 'js-array-length-fast-elements-heuristic';
*
* - https://github.com/v8/v8/blob/2feb99dc8ac75f20d2e5c9c1b343e923476851ea/src/objects/js-array.h#L87-L88
*/
var MAX_FAST_ELEMENTS_HEURISTIC = 64000|0; // eslint-disable-line id-length
var MAX_FAST_ELEMENTS_HEURISTIC = 64000 | 0; // eslint-disable-line id-length


// FUNCTIONS //
Expand All @@ -53,24 +53,24 @@ var MAX_FAST_ELEMENTS_HEURISTIC = 64000|0; // eslint-disable-line id-length
* @param {Array} arr - array to copy
* @returns {Array} array copy
*/
function copy1( arr ) {
function copy1(arr) {
var out;
var len;
var i;

len = arr.length;
if ( len > MAX_FAST_ELEMENTS_HEURISTIC ) {
out = new Array( MAX_FAST_ELEMENTS_HEURISTIC );
for ( i = 0; i < MAX_FAST_ELEMENTS_HEURISTIC; i++ ) {
out[ i ] = arr[ i ];
if (len > MAX_FAST_ELEMENTS_HEURISTIC) {
out = [];
for (i = 0; i < MAX_FAST_ELEMENTS_HEURISTIC; i++) {
out.push(arr[i]);
}
for ( i = MAX_FAST_ELEMENTS_HEURISTIC; i < len; i++ ) {
out.push( arr[ i ] );
for (i = MAX_FAST_ELEMENTS_HEURISTIC; i < len; i++) {
out.push(arr[i]);
}
} else {
out = new Array( len );
for ( i = 0; i < len; i++ ) {
out[ i ] = arr[ i ];
out = [];
for (i = 0; i < len; i++) {
out.push(arr[i]);
}
}
return out;
Expand All @@ -83,15 +83,15 @@ function copy1( arr ) {
* @param {Array} arr - array to copy
* @returns {Array} array copy
*/
function copy2( arr ) {
function copy2(arr) {
var out;
var len;
var i;

len = arr.length;
out = new Array( len );
for ( i = 0; i < len; i++ ) {
out[ i ] = arr[ i ];
out = [];
for (i = 0; i < len; i++) {
out.push(arr[i]);
}
return out;
}
Expand All @@ -103,15 +103,15 @@ function copy2( arr ) {
* @param {Array} arr - array to copy
* @returns {Array} array copy
*/
function copy3( arr ) {
function copy3(arr) {
var out;
var len;
var i;

len = arr.length;
out = [];
for ( i = 0; i < len; i++ ) {
out.push( arr[ i ] );
for (i = 0; i < len; i++) {
out.push(arr[i]);
}
return out;
}
Expand All @@ -124,13 +124,13 @@ function copy3( arr ) {
* @param {PositiveInteger} len - array length
* @returns {Function} benchmark function
*/
function createBenchmark( fcn, len ) {
function createBenchmark(fcn, len) {
var arr;
var i;

arr = [];
for ( i = 0; i < len; i++ ) {
arr.push( 0 );
for (i = 0; i < len; i++) {
arr.push(0);
}
return benchmark;

Expand All @@ -140,23 +140,23 @@ function createBenchmark( fcn, len ) {
* @private
* @param {Benchmark} b - benchmark instance
*/
function benchmark( b ) {
function benchmark(b) {
var out;
var i;

b.tic();
for ( i = 0; i < b.iterations; i++ ) {
arr[ 0 ] = floor( randu()*100.0 )|0; // cast to int32
out = fcn( arr );
if ( out.length !== len ) {
b.fail( 'unexpected length' );
for (i = 0; i < b.iterations; i++) {
arr[0] = floor(randu() * 100.0) | 0; // cast to int32
out = fcn(arr);
if (out.length !== len) {
b.fail('unexpected length');
}
}
b.toc();
if ( !isArray( out ) ) {
b.fail( 'should return an array' );
if (!isArray(out)) {
b.fail('should return an array');
}
b.pass( 'benchmark finished' );
b.pass('benchmark finished');
b.end();
}
}
Expand All @@ -179,17 +179,17 @@ function main() {
min = 1; // 10^min
max = 6; // 10^max

for ( i = min; i <= max; i++ ) {
len = pow( 10, i );
for (i = min; i <= max; i++) {
len = pow(10, i);

f = createBenchmark( copy1, len );
bench( NAME+'::heuristic:len='+len, f );
f = createBenchmark(copy1, len);
bench(NAME + '::heuristic:len=' + len, f);

f = createBenchmark( copy2, len );
bench( NAME+'::preallocate:len='+len, f );
f = createBenchmark(copy2, len);
bench(NAME + '::preallocate:len=' + len, f);

f = createBenchmark( copy3, len );
bench( NAME+'::dynamic:len='+len, f );
f = createBenchmark(copy3, len);
bench(NAME + '::dynamic:len=' + len, f);
}
}

Expand Down
Loading