Во-первых, у вас тест с
map неправильный, гляньте в консоль.
Во-вторых,
for это цикл, в котором 1) сначала выполняется
initialization, 2) потом перед каждой итерацией проверяется
condition, 3) выполняется тело цикла, 4) а после итерации выполняется
final-expression, вот и всё. А
map включает в себя еще некоторую логику, как минимум сборку нового массива, и неизвестно что еще;
map это сложная функция.
Бтв, вот версия теста чуть корректней: разделены процедуры создания массива и итерирования по нему.var b = new Array(1000000);
for (var i = 0; i < 1000000; i++) {
b[i] = i;
};
console.time('simple');
for (var i = 0; i < 1000000; i++) {
b[i] *= 2;
};
console.timeEnd('simple');
var b = new Array(1000000);
for (var i = 0; i < 1000000; i++) {
b[i] = i;
};
console.time('es6');
b.map((_, i) => i * 2);
console.timeEnd('es6');
// simple: 5.100830078125ms
// es6: 161.93994140625ms