На этом уроке мы поработаем с 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 с малым количеством элементов(ну мне так показалось)
Отличный отчет! Все верно. Классы ListDictionary и HybridDictionary принадлежат пространству имен System.Collections.Specialized. Вообще перед этим курсом полезно пройти курс Итератор, и посмотреть в сторону интерфейсов IEnumerable и IEnumerator, а там и Yield. ) Очень хороший курс, для того, чтобы начать изучать эту тему подробней.
Отчёт оценивали: 17947. Dmitry Sinitsin+119525. Александр Балбашов09014. Николай Денисов+11. Евгений Волосатов+16452. Кирилл Шмойлов+117606. Виктор+13922. Александр+116218. Дмитрий+14732. Sergey+110895. Danil42Russia+1791. Валерий Жданов+118493. Evgenii Kudriavtcev+110494. Алексей В.+11295. Дмитрий Че+14814. Дмитрий+110558. Иван Воронин+1459. Сергей Сергеевич+17645. Александр Львович+117255. Слава+1
Начинаем практику по языку C#
Чтобы стать хорошим программистом — нужно писать программы.
На нашем сайте очень много практических упражнений.
После заполнения формы ты будешь подписан на рассылку
«C# Вебинары и Видеоуроки»,
у тебя появится доступ к видеоурокам и консольным задачам.
Несколько раз в неделю тебе будут приходить письма —
приглашения на вебинары, информация об акциях и скидках,
полезная информация по C#.
Научился: HybridDictionary - WIN!!!
Я думал что ListDictionary будет быстрей, но оказалось что HybridDictionary лучше :) Трудности: С размещением в Hashtable и HybridDictionary элементов в будущем разберу, сейчас главное суть понять.
Научился: Ознакомился и поработал с новыми коллекциями Hashtable, HybrideDictionary, разобрался с тем как они располагаются в памяти. Наконец-то понял, что такое вообще hash и откуда он берется))) Трудности: При подборе количества итераций цикла (100000) в ListDictionary комп висит - поэтому ограничился 10000! Нет