Страницы: 1
RSS
Словарь быстрее наполняется, если ключи для него отсортированы, Sorted Keys is good for Dictionary
 
Приветствую!
Заметил ещё одно очень странное поведение словарей — скорость заполнения/проверки наличия сильно зависит от порядка ключей в массиве. Отсортированные ключи добавляются/проверяются намного быстрее (~ 6 раз на примере).
Для сравнения добавил карты Виталия из библы — тоже есть различие, но на уровне погрешности.
Файл
Код
Не перестаю удивляться VBA  :)   :idea:
Изменено: Jack Famous - 03.05.2024 14:19:56
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, привет. Я проверял на случайных данных, и там Коллекция оказывалась значительно быстрее на объемах 500 + тыс. Что впрочем объяснимо таким моментом, что у хеш таблицы (по сути это массив) dictionary  четко фиксированый размер (~1000 элементов). Но если была бы возможность регулировать размер этой таблицы, то можно было бы получить бОльшую скорость dictionary на больших объемах. Скажу даже, я проверял сие, брал реализацию словаря The trick-а, делал в ней настраиваемый размер хеш-таблицы, и моя реализация в виде класса vba оказывалась быстрее Dictionary на объемах 500 т.+, что впроче все еще было медленей коллекции. В общем интересные моменты есть, хотя в сравнении, с UnorderedMap это все это конечно выглядит игрушками.. Если говорить о сортировке, то в коллекции, по логике она должна делать только хуже. Ведь коллекция использует логическое дерево, и при добавлении сортированых данных, постоянно будет расти только одна ветвь и получится так, то к самым первым элементам будет самый быстрый доступ, к последним - самый медленный..
Изменено: testuser - 03.05.2024 14:55:59
 
testuser, привет! Спасибо за внимание!
Ну, тут не сравнение методов а демонстрация того, что сортировка ключей сильно влияет на скорость наполнения словаря. Совсем неочевидный нюанс, о котором я (да и, наверное, многие, если не все) не знал.

Цитата
testuser: Коллекция оказывалась значительно быстрее на объемах 500 + тыс.
делал подробное сравнение тут

Цитата
testuser: В общем интересные моменты есть, хотя в сравнении, с UnorderedMap это все это конечно выглядит игрушками.
карта даже на отсортированном быстрее (почти в 2 раза) на 100 тыс. уникальных  :D
Изменено: Jack Famous - 03.05.2024 15:12:37
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх