170 похожих чатов

Const ITERATIONS = 100000; const fastArrayJoin = (array, separator = "")

=> {
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()");

12 ответов

19 просмотров

Array.join() быстрее

А за счет чего fastArrayJoin быстрее array.join?

John Doe
А за счет чего fastArrayJoin быстрее array.join?

А ты проверил самостоятельно? Менял местами методы? Менял число итераций? Менял размер и состав массива? По мне так код выглядит подозрительно, но я пока что не имею возможности проверить самостоятельно

Anton-Piliugin Автор вопроса

что можно поменять местами?

Anton Piliugin
что можно поменять местами?

То, что сравниваешь Вообще корректнее было бы вот тут разместить тест. И инициализировать массив как-то более внятно, например рандомными числами и/или строками

Anton-Piliugin Автор вопроса

Проблема с этим сайтом, что тесты нельзя разделить, он показывает результат одного теста как лучший: https://jsbench.me/mql5xwrymg/1

Anton Piliugin
Проблема с этим сайтом, что тесты нельзя разделить...

Это может быть удобно для попарного сравнения (на телефоне у меня для строк и смешанного варианта нативный метод медленнее, для чисел быстрее) Но никто не мешает в один тест запихнуть сразу три проверки Но мне по прежнему не нравится инициализация. И если правильно понял, размер массива маленький. Всё же лучше бы на больших массивах проверять Хотя возможно для конкретной задачи нужны конкретные условия. Где там этот метод используется? Что конкатенируется?

Anton-Piliugin Автор вопроса
Алексей Попов
Это может быть удобно для попарного сравнения (на ...

Я только строки объединю в нескольких местах для создания HTTP заголовков

Anton-Piliugin Автор вопроса
Алексей Попов
Это может быть удобно для попарного сравнения (на ...

массив в тесте 64 элемента, можно менять, также как и длинну строк/чисел

Тест некорректен: все данные для тестирования должны быть подготовлены заранее, и должны быть одинаковы для каждого из вариантов. А в этом примере генерация данных происходит во время теста. Соответственно и замеряешь ты не сам join, а генерацию данных с последующим join Надо заранее подготовить три массива

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта