11.01.2023, 16:47
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Сообщение от webgraph
|
мм что-то не до конца понятно что вы имеете ввиду?))
|
Вы в первом посте перечислили все операции?
Если так, то для value (который внутри мэпа по участникам), ненужно другого мэпа с массивом, достаточно set, что бы проверить, есть ли операция с таким value у данного участника
|
|
11.01.2023, 16:52
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Сообщение от webgraph
|
Чувствуется, что здесь актуальнее использовать List ?)))
|
Мне не чувствуется. Все операции только добавить в конец и взять n последних. Ни удалений, ни вставок... Зачем List? Массив прекрасно справится.
Если вдруг понадобится какой то поиск, то все равно перебор, что у массива, что у списка.
Последний раз редактировалось voraa, 11.01.2023 в 16:54.
|
|
11.01.2023, 17:06
|
|
Профессор
|
|
Регистрация: 14.11.2014
Сообщений: 186
|
|
Сообщение от voraa
|
Мне не чувствуется. Все операции только добавить в конец и взять n последних. Ни удалений, ни вставок... Зачем List? Массив прекрасно справится.
Если вдруг понадобится какой то поиск, то все равно перебор, что у массива, что у списка.
|
Может потому что в List быстрее добавляются элементы, чем в Array?)
Последний раз редактировалось webgraph, 11.01.2023 в 17:10.
|
|
11.01.2023, 17:13
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Сообщение от webgraph
|
Может потому что в List быстрее добавляются элементы, чем в Array?)
|
Нет. Это моментальная операция, которую вообще не стоит учитывать.
(На порядок быстрее, чем всякие переводы из строк в BigInt)
|
|
11.01.2023, 17:18
|
|
Профессор
|
|
Регистрация: 14.11.2014
Сообщений: 186
|
|
Сообщение от voraa
|
Нет. Это моментальная операция, которую вообще не стоит учитывать.
(На порядок быстрее, чем всякие переводы из строк в BigInt)
|
Всмысли нет? хахах)) мы же вместе проводили 100500 тестирований.
Ну а как вы предлагаете ещё хранить BigInt? Все эти данные необходимо ещё и экспортировать, импортировать. Конечно, при импорте актуально сразу в BigInt преобразовывать. Но в конечном-то счете это будет храниться в обычной строке.
|
|
11.01.2023, 17:36
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Сообщение от webgraph
|
Всмысли нет? хахах)) мы же вместе проводили 100500 тестирований.
|
Мы проводили сравнение не push, а вставку в середину массива, используя splice и удаление, и вставку и удаление со списком.
Тут список быстрее. Не надо ничего двигать, а только переписать 6 ссылок.
splice двигает конечную часть массива, освобождая место и меняя все дальнейшие индексы
У push просто запись в конец массива. Ничего двигать не надо.
У shift надо подвинуть весь массив, переписать все индексы
Вот сравните выполнение 100000 раз push и shift
const NA = 100_000;
let arr;
let na = NA;
arr = [];
let s = 'aaaaaa';
console.time('push');
while (na--) arr.push(s);
console.timeEnd('push');
na = NA;
arr = [];
console.time('shift');
while (na--) arr.unshift(s);
console.timeEnd('shift');
Последний раз редактировалось voraa, 11.01.2023 в 17:41.
|
|
11.01.2023, 17:41
|
|
Профессор
|
|
Регистрация: 14.11.2014
Сообщений: 186
|
|
Сообщение от voraa
|
Мы проводили сравнение не push, а вставку в середину массива, используя splice, и вставку в середину списка.
Тут список быстрее. Не надо ничего двигать, а только переписать 6 ссылок.
splice двигает конечную часть массива, освобождая место и меняя все дальнейшие индексы
У push просто запись в конец массива. Ничего двигать не надо.
У shift надо подвинуть весь массив, переписать все индексы
Вот сравните выполнение 100000 раз push и shift
const NA = 100_000;
let arr;
let na = NA;
arr = [];
let s = 'aaaaaa';
console.time('push');
while (na--) arr.push(s);
console.timeEnd('push');
na = NA;
arr = [];
console.time('shift');
while (na--) arr.unshift(s);
console.timeEnd('shift');
|
Да, про Push и Shift — это очевидные вещи. Но если сравнить вставку в Array и вставку в List ?))
|
|
11.01.2023, 17:43
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Вставка (в смысле в середину) для списка быстрее. (ну для длинных массивов).
В конец дописать - массив однозначно быстрее.
То же для удаления.
Удалить последний (pop) массив быстрее. Если удалять из середины, то список быстрее
Последний раз редактировалось voraa, 11.01.2023 в 17:45.
|
|
11.01.2023, 17:45
|
|
Профессор
|
|
Регистрация: 14.11.2014
Сообщений: 186
|
|
Сообщение от voraa
|
Вставка (в смысле в середину) для списка быстрее. (ну для длинных массивов).
В конец дописать - массив однозначно быстрее.
|
Причем здесь середина? Мы же добавляли в список в конец. А не в середину.
|
|
11.01.2023, 17:54
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Сообщение от webgraph
|
Ну а как вы предлагаете ещё хранить BigInt?
|
Все от величин зависит.
Если скажем взять обычные целые. Максимальное целое число, которое может быть точно представлено в js -
Number.MAX_SAFE_INTEGER = 2**53 - 1 = 9,007,199,254,740,991
16 разрядов однако.
Может этого будет достаточно?
|
|
|
|