Курсы по программированию

Формула программиста
основатель — Волосатов Евгений Витольдович
Приходи на 3-дневный мастер-класс по C#
Вебинар «Мастер класс - две программы» начнётся через 12 час. 36 мин.

Коллекция графов / Hashtable

  • На этом уроке мы поработаем с Hashtable - каким именно
    образом в неё складываются значения и почему она будет
    работать, даже если хеш-функция вернёт одинаковые значения.
    Также мы увидим, что порядок элементов путается,
    а сами значения хранятся в очень хитром виде.
    В конце урока мы сделаем всё то же самое с гибридным классом.
    Самостоятельное задание: сравнить скорость работы этих коллекций.
    1 этап: создать МНОГО коллекций по 8 и по 9 элементов (ОТДЕЛЬНО).
    2 этап: создать ОДНУ коллекцию из ОГРОМНОГО количества элементов.
    Подвести итоги и в отчёте написать вывод.
  • Дата отправки отчёта: 15 апреля 2016 г.
  • Задание выполнено: за 30 мин.
  • Чему научился: Сравнил разницу создания Hashtable, HybridDictionary и ListDictionary.
  • Что было сложным: Ничего
  • Комментарии: HybridDictionary почему-то быстрее всех заполняет себя данными. Думал быстрее будет Hashtable. И есть странные результаты. Миллион ListDictionary с 10 элементами создается быстрее чем миллион ListDictionary с 8 элементами.
  • Оценка видео-уроку:
Отчёт от 1967 за Коллекция графов / Hashtable




Оцени работу

 
Сохранить страницу:

1967. Дмитрий
Дмитрий
ответить
→  Евгений Волосатов  # Коллекция графов / Hashtable / 2016-04-15 09:38

Все верно. Когда поменял местами. Все стало логичнее.
Миллион коллекций ListDictionary с 8 элементами создался за 3897 миллисекунд
Миллион коллекций Hashtable с 8 элементами создался за 8306 миллисекунд
Миллион коллекций HybridDictionary с 8 элементами создался за 7994 миллисекунд
Миллион коллекций ListDictionary с 10 элементами создался за 7197 миллисекунд
Миллион коллекций Hashtable с 10 элементами создался за 10602 миллисекунд
Миллион коллекций HybridDictionary с 10 элементами создался за 14699 миллисекунд.

А для остальных случаев гибрид рулит. :) Но опять же не ясно почему. Он же до 9 элемента делает ListDictionary, а потом перестраивается на Hashtable (на это же нужно время, но он все равно быстрее чем остальные).


1. Евгений Волосатов
Евгений Волосатов
ответить
→  Дмитрий  # Коллекция графов / Hashtable / 2016-04-15 09:07

Думаю это связано с тем, что память уже забита и тратится время на сборщик мусора.
Поменяй местами запуск на 10 и на 8 элементов и напиши мне.
И ещё, заметил ЗНАЧИТЕЛЬНУЮ разницу хибрида?
Потому что с 9 элемента он перестраивается.


1. Евгений Волосатов
Евгений Волосатов
ответить
→  Дмитрий  # Коллекция графов / Hashtable / 2016-04-14 23:32

Попробуй Миллион на коллекцию из 8 элементов.
Добавь в отчёт, пожалуйста.



Начинаем практику по языку C#




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.
Научился: Узнал о классах Hashtable и HybridDictionary
Трудности: Трудностей не возникло
Быстрее всего работает класс HybridDictionary. Спасибо за урок.
Научился: различным типам коллекций добавление миллион раз по 6  элементов: 164 ListDictionary 254 Hashtable 186 HybridDictionary добавление миллион раз по 11  элементов: 509 ListDictionary 460 Hashtable 969 HybridDictionary видно падение эффективности HybridDictionary для небольших размеров, но больших 8 Очень низкая эффективность ListDictionary при больших размерах коллекции: добавление 100000  элементов: 28594 ListDictionary 12 Hashtable 8 HybridDictionary 7 Generic Dictionary Generic Dictionary выглядит прилично
Трудности: не ошибиться при копи-пасте ))
Спасибо за урок!