=> {
const length = array.length;
const last = length - 1;
let result = "";
for (let i = 0; i < length; i++) {
result += i !== last ? array[i] + separator : array[i];
}
return result;
};
const generateString = (length = 32) => {
let result = '';
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
const charactersLength = characters.length;
for (let i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}
const generateArray = (length = 32) => {
return [...Array(length).keys()].map(() => generateString())
}
console.time("FastArrayJoin()");
for (let i = 0; i < ITERATIONS; i++) {
fastArrayJoin(generateArray(), ",")
}
console.timeEnd("FastArrayJoin()");
console.time("Array.join()");
for (let i = 0; i < ITERATIONS; i++) {
generateArray().join(",")
}
console.timeEnd("Array.join()");
Array.join() быстрее
А за счет чего fastArrayJoin быстрее array.join?
А ты проверил самостоятельно? Менял местами методы? Менял число итераций? Менял размер и состав массива? По мне так код выглядит подозрительно, но я пока что не имею возможности проверить самостоятельно
что можно поменять местами?
То, что сравниваешь Вообще корректнее было бы вот тут разместить тест. И инициализировать массив как-то более внятно, например рандомными числами и/или строками
а сейчас они не рандомные?
Проблема с этим сайтом, что тесты нельзя разделить, он показывает результат одного теста как лучший: https://jsbench.me/mql5xwrymg/1
Это может быть удобно для попарного сравнения (на телефоне у меня для строк и смешанного варианта нативный метод медленнее, для чисел быстрее) Но никто не мешает в один тест запихнуть сразу три проверки Но мне по прежнему не нравится инициализация. И если правильно понял, размер массива маленький. Всё же лучше бы на больших массивах проверять Хотя возможно для конкретной задачи нужны конкретные условия. Где там этот метод используется? Что конкатенируется?
Я только строки объединю в нескольких местах для создания HTTP заголовков
массив в тесте 64 элемента, можно менять, также как и длинну строк/чисел
Тест некорректен: все данные для тестирования должны быть подготовлены заранее, и должны быть одинаковы для каждого из вариантов. А в этом примере генерация данных происходит во время теста. Соответственно и замеряешь ты не сам join, а генерацию данных с последующим join Надо заранее подготовить три массива
Обсуждают сегодня