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

Формула программиста

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

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

  • На этом уроке мы поработаем с Hashtable - каким именно
    образом в неё складываются значения и почему она будет
    работать, даже если хеш-функция вернёт одинаковые значения.
    Также мы увидим, что порядок элементов путается,
    а сами значения хранятся в очень хитром виде.
    В конце урока мы сделаем всё то же самое с гибридным классом.
    Самостоятельное задание: сравнить скорость работы этих коллекций.
    1 этап: создать МНОГО коллекций по 8 и по 9 элементов (ОТДЕЛЬНО).
    2 этап: создать ОДНУ коллекцию из ОГРОМНОГО количества элементов.
    Подвести итоги и в отчёте написать вывод.
  • Дата отправки отчёта: 6 августа 2018 г.
  • Задание выполнено: за 13 час. 33 мин.
  • Чему научился: Тестирование показало
    1)  ListDictionary должен содержать не более 10 элементов, например
    при создании 10 000 ListDictionary по 4 элемента было потрачено времени 3мс, а если по 12 элементов - 12 мс,
    если же делать 1 ListDictionary  и запихнуть в него 40 000 элементов, то это заняло у меня около 15204 мс, а если 120 000 - 159253 мс(! очень долго)

    2) Hashtable предназначен для хранения большего количества элементов
    при создании 10 000 Hashtable по 4 элемента было потрачено времени 10мс, а если по 12 элементов - 83 мс, что проигрывает в несколько раз по скорости по сравнению с ListDictionary
    если же делать 1 Hashtable  и запихнуть в него 40 000 элементов, то это заняло у меня всего 56мс, а если 120 000 - 153 мс(! если сравнить это с 159253мс ListDictionary ни вкакие ворота не лезет в 1000 раз раззница  )

    3) HybridDictionary , как видно на скриншоте,  ведет себя как ListDictionary при малом количестве элеметов в словаре и как Hashtable , есил количество элементов растет.

    Вывод у меня - очень опасно использовать ListDictionary , если в него будет помещено большое количество элементов, причем не пропорционально опасно, нежели использовать Hashtable  с малым количеством элементов(ну мне так показалось)
  • Оценка видео-уроку:
Отчёт от 17425 за Коллекция графов / Hashtable




Оцени работу

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

1295. --
Дмитрий Че
Дмитрий Че
ответить
→  ser2018  # Коллекция графов / Hashtable / 2018-08-08 00:28

Вот так отчет! Не просто отчет, а лекция по оценке эффективности типов данных и алгоритмов) Здорово!


10558. --
Иван Воронин
Иван Воронин
ответить
→  ser2018  # Коллекция графов / Hashtable / 2018-08-08 02:42

Молодец, всё верно, отличный анализ.


9752. --
chokayes
chokayes
ответить
→  ser2018  # Коллекция графов / Hashtable / 2018-08-08 04:37

Отличный отчет! Все верно. Классы ListDictionary и HybridDictionary принадлежат пространству имен System.Collections.Specialized.
Вообще перед этим курсом полезно пройти курс Итератор, и посмотреть в сторону интерфейсов IEnumerable и IEnumerator, а там и Yield. )
Очень хороший курс, для того, чтобы начать изучать эту тему подробней.


  • Отчёт оценивали:
    17947Dmitry Sinitsin+1   19525Александр Балбашов0   9014Николай Денисов+1   1Евгений Волосатов+1   6452Кирилл Шмойлов+1   17606Виктор+1   3922Александр+1   16218Дмитрий+1   4732Sergey+1   10895Danil42Russia+1   791Валерий Жданов+1   18493Evgenii Kudriavtcev+1   10494Алексей В.+1   1295Дмитрий Че+1   4814Дмитрий+1   10558Иван Воронин+1   459Сергей Сергеевич+1   7645Александр Львович+1   17255Слава+1  

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





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

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

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

Ты в любой момент сможешь отписаться от рассылки.


Научился: HybridDictionary - WIN!!! Я думал что ListDictionary будет быстрей, но оказалось что HybridDictionary лучше :)
Трудности: С размещением в Hashtable и HybridDictionary элементов в будущем разберу, сейчас главное суть понять.



Научился: Ознакомился и поработал с новыми коллекциями Hashtable, HybrideDictionary, разобрался с тем как они располагаются в памяти. Наконец-то понял, что такое вообще hash и откуда он берется)))
Трудности: При подборе количества итераций цикла (100000) в ListDictionary комп висит - поэтому ограничился 10000!
Нет