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

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

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

  • На этом уроке мы поработаем с Hashtable - каким именно
    образом в неё складываются значения и почему она будет
    работать, даже если хеш-функция вернёт одинаковые значения.
    Также мы увидим, что порядок элементов путается,
    а сами значения хранятся в очень хитром виде.
    В конце урока мы сделаем всё то же самое с гибридным классом.
    Самостоятельное задание: сравнить скорость работы этих коллекций.
    1 этап: создать МНОГО коллекций по 8 и по 9 элементов (ОТДЕЛЬНО).
    2 этап: создать ОДНУ коллекцию из ОГРОМНОГО количества элементов.
    Подвести итоги и в отчёте написать вывод.
  • Дата отправки отчёта: 15 апреля
  • Задание выполнено: за 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 элементов.
Добавь в отчёт, пожалуйста.


  • Отчёт оценивали:
    1Евгений Витольдович+1   4467Alcatraz+1   9263Андрей Н.+1   9567Максим+1   9286Petuško Julija+1   9288Pučko Antonina+1   3506Алексей|BrisK|Кривицкий+1   7276Ильшат+1   6458Илья+1   4395Денис+1   9369Tautavičiūtė Anastasija+1   689Igorenzia+1   9541Сергей Валерич0   6452Lik_Kirill+1   9285Bogdaškaitė Erika+1   6958Кирилл+1   8380zhikharevav+1   459Сергей Сергеевич+1   8886Михаил Ермишин+1   9332Dima+1   6925Артём+1  

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Ознакомился со словарями. Выполнил все задания.
Трудности: Ничего.
Для тестирования я выбрал коллекцию HybridDictionary, в 1 варианте создается массив из 1 000 000 HybridDictionary по 9 элементов в каждом, во 2 варианте создается один HybridDictionary с 9 000 000 элементами. Результаты тестирования, которые вы можете видеть на скриншоте показывают, что лучше использовать второй вариант (один экземпляр коллекции с множеством элементов), при этом время создания во 2м случаем примерно на 40-50% меньше. Соответственно 2й вариант работает быстрее.
Научился: Узнал про HibrydDictionary. И понял как работает HashTable и для чего он нужен
Трудности: ---------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------