mirror of https://github.com/lukechilds/node.git
Browse Source
PR-URL: https://github.com/nodejs/node/pull/11582 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>v6
James M Snell
8 years ago
1 changed files with 82 additions and 0 deletions
@ -0,0 +1,82 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
const common = require('../common.js'); |
||||
|
|
||||
|
const bench = common.createBenchmark(main, { |
||||
|
method: ['for', 'for-of', 'for-in', 'forEach'], |
||||
|
count: [5, 10, 20, 100], |
||||
|
millions: [5] |
||||
|
}); |
||||
|
|
||||
|
function useFor(n, items, count) { |
||||
|
var i, j; |
||||
|
bench.start(); |
||||
|
for (i = 0; i < n; i++) { |
||||
|
for (j = 0; j < count; j++) { |
||||
|
/* eslint-disable no-unused-vars */ |
||||
|
var item = items[j]; |
||||
|
/* esline-enable no-unused-vars */ |
||||
|
} |
||||
|
} |
||||
|
bench.end(n / 1e6); |
||||
|
} |
||||
|
|
||||
|
function useForOf(n, items) { |
||||
|
var i, item; |
||||
|
bench.start(); |
||||
|
for (i = 0; i < n; i++) { |
||||
|
for (item of items) {} |
||||
|
} |
||||
|
bench.end(n / 1e6); |
||||
|
} |
||||
|
|
||||
|
function useForIn(n, items) { |
||||
|
var i, j, item; |
||||
|
bench.start(); |
||||
|
for (i = 0; i < n; i++) { |
||||
|
for (j in items) { |
||||
|
/* eslint-disable no-unused-vars */ |
||||
|
item = items[j]; |
||||
|
/* esline-enable no-unused-vars */ |
||||
|
} |
||||
|
} |
||||
|
bench.end(n / 1e6); |
||||
|
} |
||||
|
|
||||
|
function useForEach(n, items) { |
||||
|
var i; |
||||
|
bench.start(); |
||||
|
for (i = 0; i < n; i++) { |
||||
|
items.forEach((item) => {}); |
||||
|
} |
||||
|
bench.end(n / 1e6); |
||||
|
} |
||||
|
|
||||
|
function main(conf) { |
||||
|
const n = +conf.millions * 1e6; |
||||
|
const count = +conf.count; |
||||
|
|
||||
|
const items = new Array(count); |
||||
|
var i; |
||||
|
var fn; |
||||
|
for (i = 0; i < count; i++) |
||||
|
items[i] = i; |
||||
|
|
||||
|
switch (conf.method) { |
||||
|
case 'for': |
||||
|
fn = useFor; |
||||
|
break; |
||||
|
case 'for-of': |
||||
|
fn = useForOf; |
||||
|
break; |
||||
|
case 'for-in': |
||||
|
fn = useForIn; |
||||
|
break; |
||||
|
case 'forEach': |
||||
|
fn = useForEach; |
||||
|
break; |
||||
|
default: |
||||
|
throw new Error('Unexpected method'); |
||||
|
} |
||||
|
fn(n, items, count); |
||||
|
} |
Loading…
Reference in new issue