Я пытаюсь увидеть разницу в производительности между «за» и «уменьшить» по сравнению с числовым массивом, и я вижу, что всегда вторая измеряемая функция (независимо от того, является ли она для или уменьшает) быстрее, чемпервый.Я предполагаю, что это связано с кэшированием данных или размером пула потоков с использованием узла.Это код:
process.env.UV_THREADPOOL_SIZE = 1;
let array = [
1,
23,
4,
5,
6,
7,
8,
7,
65,
4,
3,
23,
43,
2,
23,
32,
23,
23,
234,
243,
423,
432,
43,
23,
2,
23,
2,
23,
];
let sum = 0;
console.time('reduce');
sum = array.reduce((s, p) => (s += p), 0);
console.timeEnd('reduce');
sum = 0;
console.time('for');
for (let i = 0; i < array.length; i++) {
sum += array[i];
}
console.timeEnd('for');
И этот код показывает разные результаты:
process.env.UV_THREADPOOL_SIZE = 1;
let array = [
1,
23,
4,
5,
6,
7,
8,
7,
65,
4,
3,
23,
43,
2,
23,
32,
23,
23,
234,
243,
423,
432,
43,
23,
2,
23,
2,
23,
];
let sum = 0;
console.time('for');
for (let i = 0; i < array.length; i++) {
sum += array[i];
}
console.timeEnd('for');
sum = 0;
console.time('reduce');
sum = array.reduce((s, p) => (s += p), 0);
console.timeEnd('reduce');
Я имею в виду, если вы измените порядок выполнения, результаты измерений будут другими.
Для проведения теста я использую узел v11.11.0
Есть идеи по этому поводу?
РЕДАКТИРОВАТЬ: я не ищу объяснение, почему сокращение быстрее, чем для или что-то вродетот.Я хочу знать, почему nodejs производит это в результате этой последовательности операций.