@@ -41,7 +41,7 @@ var NAME = 'js-array-length-fast-elements-heuristic';
4141*
4242* - https://github.com/v8/v8/blob/2feb99dc8ac75f20d2e5c9c1b343e923476851ea/src/objects/js-array.h#L87-L88
4343*/
44- var MAX_FAST_ELEMENTS_HEURISTIC = 64000 | 0 ; // eslint-disable-line id-length
44+ var MAX_FAST_ELEMENTS_HEURISTIC = 64000 | 0 ; // eslint-disable-line id-length
4545
4646
4747// FUNCTIONS //
@@ -53,24 +53,24 @@ var MAX_FAST_ELEMENTS_HEURISTIC = 64000|0; // eslint-disable-line id-length
5353* @param {Array } arr - array to copy
5454* @returns {Array } array copy
5555*/
56- function copy1 ( arr ) {
56+ function copy1 ( arr ) {
5757 var out ;
5858 var len ;
5959 var i ;
6060
6161 len = arr . length ;
62- if ( len > MAX_FAST_ELEMENTS_HEURISTIC ) {
63- out = new Array ( MAX_FAST_ELEMENTS_HEURISTIC ) ;
64- for ( i = 0 ; i < MAX_FAST_ELEMENTS_HEURISTIC ; i ++ ) {
65- out [ i ] = arr [ i ] ;
62+ if ( len > MAX_FAST_ELEMENTS_HEURISTIC ) {
63+ out = [ ] ;
64+ for ( i = 0 ; i < MAX_FAST_ELEMENTS_HEURISTIC ; i ++ ) {
65+ out . push ( arr [ i ] ) ;
6666 }
67- for ( i = MAX_FAST_ELEMENTS_HEURISTIC ; i < len ; i ++ ) {
68- out . push ( arr [ i ] ) ;
67+ for ( i = MAX_FAST_ELEMENTS_HEURISTIC ; i < len ; i ++ ) {
68+ out . push ( arr [ i ] ) ;
6969 }
7070 } else {
71- out = new Array ( len ) ;
72- for ( i = 0 ; i < len ; i ++ ) {
73- out [ i ] = arr [ i ] ;
71+ out = [ ] ;
72+ for ( i = 0 ; i < len ; i ++ ) {
73+ out . push ( arr [ i ] ) ;
7474 }
7575 }
7676 return out ;
@@ -83,15 +83,15 @@ function copy1( arr ) {
8383* @param {Array } arr - array to copy
8484* @returns {Array } array copy
8585*/
86- function copy2 ( arr ) {
86+ function copy2 ( arr ) {
8787 var out ;
8888 var len ;
8989 var i ;
9090
9191 len = arr . length ;
92- out = new Array ( len ) ;
93- for ( i = 0 ; i < len ; i ++ ) {
94- out [ i ] = arr [ i ] ;
92+ out = [ ] ;
93+ for ( i = 0 ; i < len ; i ++ ) {
94+ out . push ( arr [ i ] ) ;
9595 }
9696 return out ;
9797}
@@ -103,15 +103,15 @@ function copy2( arr ) {
103103* @param {Array } arr - array to copy
104104* @returns {Array } array copy
105105*/
106- function copy3 ( arr ) {
106+ function copy3 ( arr ) {
107107 var out ;
108108 var len ;
109109 var i ;
110110
111111 len = arr . length ;
112112 out = [ ] ;
113- for ( i = 0 ; i < len ; i ++ ) {
114- out . push ( arr [ i ] ) ;
113+ for ( i = 0 ; i < len ; i ++ ) {
114+ out . push ( arr [ i ] ) ;
115115 }
116116 return out ;
117117}
@@ -124,13 +124,13 @@ function copy3( arr ) {
124124* @param {PositiveInteger } len - array length
125125* @returns {Function } benchmark function
126126*/
127- function createBenchmark ( fcn , len ) {
127+ function createBenchmark ( fcn , len ) {
128128 var arr ;
129129 var i ;
130130
131131 arr = [ ] ;
132- for ( i = 0 ; i < len ; i ++ ) {
133- arr . push ( 0 ) ;
132+ for ( i = 0 ; i < len ; i ++ ) {
133+ arr . push ( 0 ) ;
134134 }
135135 return benchmark ;
136136
@@ -140,23 +140,23 @@ function createBenchmark( fcn, len ) {
140140 * @private
141141 * @param {Benchmark } b - benchmark instance
142142 */
143- function benchmark ( b ) {
143+ function benchmark ( b ) {
144144 var out ;
145145 var i ;
146146
147147 b . tic ( ) ;
148- for ( i = 0 ; i < b . iterations ; i ++ ) {
149- arr [ 0 ] = floor ( randu ( ) * 100.0 ) | 0 ; // cast to int32
150- out = fcn ( arr ) ;
151- if ( out . length !== len ) {
152- b . fail ( 'unexpected length' ) ;
148+ for ( i = 0 ; i < b . iterations ; i ++ ) {
149+ arr [ 0 ] = floor ( randu ( ) * 100.0 ) | 0 ; // cast to int32
150+ out = fcn ( arr ) ;
151+ if ( out . length !== len ) {
152+ b . fail ( 'unexpected length' ) ;
153153 }
154154 }
155155 b . toc ( ) ;
156- if ( ! isArray ( out ) ) {
157- b . fail ( 'should return an array' ) ;
156+ if ( ! isArray ( out ) ) {
157+ b . fail ( 'should return an array' ) ;
158158 }
159- b . pass ( 'benchmark finished' ) ;
159+ b . pass ( 'benchmark finished' ) ;
160160 b . end ( ) ;
161161 }
162162}
@@ -179,17 +179,17 @@ function main() {
179179 min = 1 ; // 10^min
180180 max = 6 ; // 10^max
181181
182- for ( i = min ; i <= max ; i ++ ) {
183- len = pow ( 10 , i ) ;
182+ for ( i = min ; i <= max ; i ++ ) {
183+ len = pow ( 10 , i ) ;
184184
185- f = createBenchmark ( copy1 , len ) ;
186- bench ( NAME + '::heuristic:len=' + len , f ) ;
185+ f = createBenchmark ( copy1 , len ) ;
186+ bench ( NAME + '::heuristic:len=' + len , f ) ;
187187
188- f = createBenchmark ( copy2 , len ) ;
189- bench ( NAME + '::preallocate:len=' + len , f ) ;
188+ f = createBenchmark ( copy2 , len ) ;
189+ bench ( NAME + '::preallocate:len=' + len , f ) ;
190190
191- f = createBenchmark ( copy3 , len ) ;
192- bench ( NAME + '::dynamic:len=' + len , f ) ;
191+ f = createBenchmark ( copy3 , len ) ;
192+ bench ( NAME + '::dynamic:len=' + len , f ) ;
193193 }
194194}
195195
0 commit comments