Почему перебор массива через for быстрее, чем .map()?
Во-первых, у вас тест с 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
Почему он должен быть быстрее?) У них разные цели и функционал.
А for (var i = 1000000 - 1; i >= 0; i--)
Будет ещё быстрее, чем с ++Здесь можно делать довольно объективные замеры