Вот, в общем-то, и все. По скорости поиска
двухуровневый массив превосходит своего более могучего собрата (Б+-дерево), но по
вставке начинает проигрывать где-то в районе миллиона элементов (а может, и
раньше, если хранимые значения или ключи имеют большой размер). Если сравнивать
по тестам поиска количества одинаковых слов в тексте, то получается такая
картина:
«SortedDictionary» – это generic-реализация абстракции
Dictionary на базе массива. Входит в стандартную библиотеку .NET Framework.
Более подробно см. статью «Коллекции в .NET Framework
Class Library».
«MySortedDictionary»
– аналог SortedDictionary, написанный мною. Отличается от оригинала тем, что доступ к массиву
осуществляется напрямую. Я привел ее, чтобы сравнить скорость ее работы с
тестами «TLSD (прямой доступ)» и «Б+-дерева (прямой доступ)», так как в этих
тестах также осуществляется прямой доступ к содержимому коллекций. Эти
коллекции отличаются только используемыми алгоритмами, и их сравнение позволит
увидеть чистую разницу между алгоритмами.
«QuickDictionary (через индексатор)» – это моя
generic-реализация хеш-таблицы. Доступ к данным осуществляется через индексатор
(реализацию интерфейса IDictionary<T>).
«QuickDictionary (прямой доступ)» – то же, что и
предыдущее, но с прямым доступом к содержимому хеш-таблицы.
«Dictionary» – это generic-реализация абстракции
Dictionary на базе хеш-таблицы. Входит в стандартную библиотеку .NET Framework.
«TLSD (через индексатор)» – TwoLevelSortedDictionary, generic-реализация двухуровневого сортированного массива. Доступ к данным
осуществляется через индексатор (реализацию интерфейса IDictionary<T>).
При вставке производится повторный поиск.
«TLSD (прямой доступ)» – то же, что и предыдущее, но
вставка производится в позицию. найденную при поиске и доступ к содержимому
коллекции производится напрямую.
Из этих тестов видно, что если у Влада Чистякова в
статье «Коллекции
в .NET Framework Class Library» (из этого же номера журнала) хеш-таблица и
сортированный список различаются по скорости примерно в 4 раза, то здесь – аж в
16 раз. Если же сравнивать Dictionary и TwoLevelSortedDictionary, то их
скорость различается менее чем в 3 раза.
Деревья выигрывают у MySortedDictionary только за счет
времени вставки, так как при вставке в MySortedDictionary осуществляется
сдвижка памяти, тогда как время, затрачиваемое на вставку в Б+-дерево и
двухуровневый массив, пренебрежимо мало.
Рекомендуем скачать другие рефераты по теме: сочинения по русскому языку, личные сообщения.