Я пытаюсь понять ArrayBuffer в js как один из переносимых типов между потоком и рабочим.
Я обнаружил огромный разрыв в производительности при создании переменной и не могу найти ответ на этот вопрос.Интернет.
Я пробовал несколько сравнительных тестов, и литералы массивов всегда намного быстрее объявлялись, чем TypedArrays.Я пытался в узле 11, Chrome и Firefox, результаты согласованы.
var LIMIT = 10000;
console.time("Array insertion time");
for (var i = 0; i < LIMIT; i++) {
var arr = new Array();
}
console.timeEnd("Array insertion time");
console.time("ArrayBuffer insertion time");
for (var i = 0; i < LIMIT; i++) {
var buffer = new ArrayBuffer(LIMIT * 4);
var arr = new Int32Array(buffer);
}
console.timeEnd("ArrayBuffer insertion time");
Я получаю сумасшедшие результаты:
Время вставки массива: 1.283ms
Время вставки ArrayBuffer: 53.979ms
Я думал, что для JS Engine будет быстрее объявить TypedArray, чем литерал.Я думал, что ArrayBuffer был очень оптимизированным вызовом для выделения памяти для программы.