Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 11.01.2023, 16:47
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от webgraph
мм что-то не до конца понятно что вы имеете ввиду?))
Вы в первом посте перечислили все операции?
Если так, то для value (который внутри мэпа по участникам), ненужно другого мэпа с массивом, достаточно set, что бы проверить, есть ли операция с таким value у данного участника
Ответить с цитированием
  #22 (permalink)  
Старый 11.01.2023, 16:52
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от webgraph
Чувствуется, что здесь актуальнее использовать List ?)))
Мне не чувствуется. Все операции только добавить в конец и взять n последних. Ни удалений, ни вставок... Зачем List? Массив прекрасно справится.
Если вдруг понадобится какой то поиск, то все равно перебор, что у массива, что у списка.

Последний раз редактировалось voraa, 11.01.2023 в 16:54.
Ответить с цитированием
  #23 (permalink)  
Старый 11.01.2023, 17:06
Аватар для webgraph
Профессор
Отправить личное сообщение для webgraph Посмотреть профиль Найти все сообщения от webgraph
 
Регистрация: 14.11.2014
Сообщений: 186

Сообщение от voraa Посмотреть сообщение
Мне не чувствуется. Все операции только добавить в конец и взять n последних. Ни удалений, ни вставок... Зачем List? Массив прекрасно справится.
Если вдруг понадобится какой то поиск, то все равно перебор, что у массива, что у списка.
Может потому что в List быстрее добавляются элементы, чем в Array?)

Последний раз редактировалось webgraph, 11.01.2023 в 17:10.
Ответить с цитированием
  #24 (permalink)  
Старый 11.01.2023, 17:13
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от webgraph
Может потому что в List быстрее добавляются элементы, чем в Array?)
Нет. Это моментальная операция, которую вообще не стоит учитывать.
(На порядок быстрее, чем всякие переводы из строк в BigInt)
Ответить с цитированием
  #25 (permalink)  
Старый 11.01.2023, 17:18
Аватар для webgraph
Профессор
Отправить личное сообщение для webgraph Посмотреть профиль Найти все сообщения от webgraph
 
Регистрация: 14.11.2014
Сообщений: 186

Сообщение от voraa Посмотреть сообщение
Нет. Это моментальная операция, которую вообще не стоит учитывать.
(На порядок быстрее, чем всякие переводы из строк в BigInt)
Всмысли нет? хахах)) мы же вместе проводили 100500 тестирований.

Ну а как вы предлагаете ещё хранить BigInt? Все эти данные необходимо ещё и экспортировать, импортировать. Конечно, при импорте актуально сразу в BigInt преобразовывать. Но в конечном-то счете это будет храниться в обычной строке.
Ответить с цитированием
  #26 (permalink)  
Старый 11.01.2023, 17:36
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 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.
Ответить с цитированием
  #27 (permalink)  
Старый 11.01.2023, 17:41
Аватар для webgraph
Профессор
Отправить личное сообщение для webgraph Посмотреть профиль Найти все сообщения от webgraph
 
Регистрация: 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 ?))
Ответить с цитированием
  #28 (permalink)  
Старый 11.01.2023, 17:43
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Вставка (в смысле в середину) для списка быстрее. (ну для длинных массивов).
В конец дописать - массив однозначно быстрее.
То же для удаления.
Удалить последний (pop) массив быстрее. Если удалять из середины, то список быстрее

Последний раз редактировалось voraa, 11.01.2023 в 17:45.
Ответить с цитированием
  #29 (permalink)  
Старый 11.01.2023, 17:45
Аватар для webgraph
Профессор
Отправить личное сообщение для webgraph Посмотреть профиль Найти все сообщения от webgraph
 
Регистрация: 14.11.2014
Сообщений: 186

Сообщение от voraa Посмотреть сообщение
Вставка (в смысле в середину) для списка быстрее. (ну для длинных массивов).
В конец дописать - массив однозначно быстрее.
Причем здесь середина? Мы же добавляли в список в конец. А не в середину.
Ответить с цитированием
  #30 (permalink)  
Старый 11.01.2023, 17:54
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от webgraph
Ну а как вы предлагаете ещё хранить BigInt?
Все от величин зависит.
Если скажем взять обычные целые. Максимальное целое число, которое может быть точно представлено в js -
Number.MAX_SAFE_INTEGER = 2**53 - 1 = 9,007,199,254,740,991
16 разрядов однако.
Может этого будет достаточно?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как изменять left и top у hover через js что бы иметь возможность провести шар по кон feddim72 Элементы интерфейса 2 13.12.2020 23:02
Как получить доступ к элементами внешнего svg файла? pokk Общие вопросы Javascript 1 06.12.2019 12:17
Как получиться доступ к элементам не своей страницы? AlkaLoiD Общие вопросы Javascript 4 29.11.2010 12:47
доступ к данным iframe gooody Events/DOM/Window 2 26.01.2010 17:37
dynatree.jquery - как получть доступ к родительскому узлу. ast-ross jQuery 0 23.03.2009 18:39