TGViewer
C# Heppard C# Heppard @csharp_gepard · 1.65K subscribers
Post #100 1.84K
HashSet vs Array #память #скорость #бенч

Иногда бывает ситуация, когда нам нужно убедиться, что элемент существует в коллекции.

В моей ситуации это хитрая проверка прав пользователя, по которым ведётся простое сопоставление. Я создаю сет или массив, и начинаю поиск по нему.

В результате, мы имеем вот этот бенчмарк. Какие же выводы мы можем сделать из него:
1. Чем меньше коллекция, тем более эффективен подход с простым перебором массива. И тем дороже HashSet.
2. Задачи HashSet'a становятся эффективными по скорости от 100 элементов при непосредственном создании перед поиском.
3. HashSet ест память, исходя из имплементации.
4. Простой массив более эффективен по памяти.

Код в комментариях.

P.S.: Коллега сделал замер чисто поиска, без аллокации. Array там почти как HashSet на 8 элементах.
P.P.S.: Если хочется сравнить с предварительно созданым FrozenSet, то результаты коллега опубликовал тут. Array всё ещё ожидаемо хорош на малых коллекциях.
  • 🔥 27
  • 👍 6
  • 🗿 5
  • ❤ 1
More from @csharp_gepard
  1. Mar 13, 2026Ozon Tech Community .NET Meetup 24 марта, лофт Casa Picassa, 19:00 Ищем способы бороться с…
  2. Jan 20, 2026Ещё одна история про память #отдых Судя по комментариям специалистов и ценам на RAM в мага…
  3. Nov 25, 2025FastEnum #скорость Иногда нам нужно не просто быстро, а очень быстро. В этот момент в дело…
  4. Nov 20, 2025UnsafeAccessor #скорость Иногда возникает странное желание изменять приватные поля в класс…
  5. Nov 17, 2025Latency numbers every programmer should know Я всё время теряю эти циферки, особенно когда…
  6. Oct 29, 2025Dictionary.TryGetValue #скорость Уж сколько лет прошло и, вроде, все это знают. Но, тем не…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →