На этом уроке мы поработаем с Hashtable - каким именно образом в неё складываются значения и почему она будет работать, даже если хеш-функция вернёт одинаковые значения. Также мы увидим, что порядок элементов путается, а сами значения хранятся в очень хитром виде. В конце урока мы сделаем всё то же самое с гибридным классом. Самостоятельное задание: сравнить скорость работы этих коллекций. 1 этап: создать МНОГО коллекций по 8 и по 9 элементов (ОТДЕЛЬНО). 2 этап: создать ОДНУ коллекцию из ОГРОМНОГО количества элементов. Подвести итоги и в отчёте написать вывод.
Дата отправки отчёта:
15 апреля 2016 г.
Задание выполнено: за
30 мин.
Чему научился:
Сравнил разницу создания Hashtable, HybridDictionary и ListDictionary.
Что было сложным:
Ничего
Комментарии:
HybridDictionary почему-то быстрее всех заполняет себя данными. Думал быстрее будет Hashtable. И есть странные результаты. Миллион ListDictionary с 10 элементами создается быстрее чем миллион ListDictionary с 8 элементами.
Думаю это связано с тем, что память уже забита и тратится время на сборщик мусора. Поменяй местами запуск на 10 и на 8 элементов и напиши мне. И ещё, заметил ЗНАЧИТЕЛЬНУЮ разницу хибрида? Потому что с 9 элемента он перестраивается.
Все верно. Когда поменял местами. Все стало логичнее. Миллион коллекций ListDictionary с 8 элементами создался за 3897 миллисекунд Миллион коллекций Hashtable с 8 элементами создался за 8306 миллисекунд Миллион коллекций HybridDictionary с 8 элементами создался за 7994 миллисекунд Миллион коллекций ListDictionary с 10 элементами создался за 7197 миллисекунд Миллион коллекций Hashtable с 10 элементами создался за 10602 миллисекунд Миллион коллекций HybridDictionary с 10 элементами создался за 14699 миллисекунд.
А для остальных случаев гибрид рулит. :) Но опять же не ясно почему. Он же до 9 элемента делает ListDictionary, а потом перестраивается на Hashtable (на это же нужно время, но он все равно быстрее чем остальные).
Начинаем практику по языку C#
Чтобы стать хорошим программистом — нужно писать программы.
На нашем сайте очень много практических упражнений.
После заполнения формы ты будешь подписан на рассылку
«C# Вебинары и Видеоуроки»,
у тебя появится доступ к видеоурокам и консольным задачам.
Несколько раз в неделю тебе будут приходить письма —
приглашения на вебинары, информация об акциях и скидках,
полезная информация по C#.
Научился: HybridDictionary - WIN!!!
Я думал что ListDictionary будет быстрей, но оказалось что HybridDictionary лучше :) Трудности: С размещением в Hashtable и HybridDictionary элементов в будущем разберу, сейчас главное суть понять.
Научился: Ознакомился и поработал с новыми коллекциями Hashtable, HybrideDictionary, разобрался с тем как они располагаются в памяти. Наконец-то понял, что такое вообще hash и откуда он берется))) Трудности: При подборе количества итераций цикла (100000) в ListDictionary комп висит - поэтому ограничился 10000! Нет