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

Формула программиста
основатель — Волосатов Евгений Витольдович

Материалы мастер класса "Люди на карте"


Вебинар «Мы начинаем PHP + Yii2» начнётся через 8 час. 57 мин.

Коллекция графов / 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#.

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


Научился: Познакомился и немного поработал с ListDictionary, Hashtable, HybridDictionary
Трудности: Понять, что такое хэш
Результаты измерений: 1. Создание коллекций трех вышеперечисленных типов, добавление в каждую по 8 элементов, повторение 10000000 раз ListDictionary 2663мс Hashtable 5159мс HybridDictionary 2879мс Ожидаемо в таких условиях ListDictionary быстрее, поскольку элементов немного, HybridDictionary совсем немного отстает. 2. Создание коллекций каждого из трех, добавление в каждую по 100000 элементов, ListDictionary 27010мс Hashtable 11мс HybridDictionary 5мс Вывод - ListDictionary совершенно не подходит для работы с большим количеством элементов, типы с хешированием вне конкуренции. Особенно радует HybridDictionary своей универсальностью. Отличный урок!


Научился: хеш-таблицам и гибридным словарям
Почему то гибридные словари работали дольше всего на 10+ элементах.