Выбор между Словарем, Hashtable и Map зависит от случаев использования. Однако вы должны знать характеристики каждого из них. Это не исчерпывающий список, а лишь некоторые ключевые различия вы можете начать с:
- Hashtable Представляет коллекцию пар ключ/значение, которые организованы на основе хэш-кода ключа. Это измененная коллекция из .NET BCL
- Словарь <> Это общая реализация хэш-таблицы. Также измененная коллекция из .NET BCL
- Карта Это неизменяемый тип F #. Он реализован на основе AVL-деревьев, который представляет собой совершенно другую структуру данных с различными характеристиками производительности и вариантами использования.
Если вы делаете много записей, коллекции таблиц Hash имеют значительно лучшую производительность заполнения, чем деревья AVL.
Извлечение значения из словаря с помощью его ключа очень быстро, близко к O (1), потому что класс Dictionary реализован как хеш-таблица.
Карты F # реализованы как неизменные деревья AVL, эффективная структура данных, которая формирует самобалансирующееся двоичное дерево. Деревья AVL хорошо известны своей эффективностью, в которой они могут искать, вставлять и удалять элементы в дереве в O (log n) время, где n - количество элементов в дереве.
Что касается карты, используется случай, если у вас есть набор статических данных (таких как данные конфигурации, которые загружаются при запуске приложения), вам нужно часто искать ключ, карта является хорошим выбором как и любая, его неизменность в этом случае гарантирует, что статические данные не могут быть изменены по ошибке и мало влияют на производительность, поскольку вам никогда не нужно мутировать ее после инициализации.
Async.RunSynchronously
выполняет предоставленное асинхронное вычисление и ожидает его результата. Вы можете использовать его в интерактивном окне F #, например, для проверки асинхронных рабочих процессов.
Как Томас указывает на выбор правильного ассоциативного контейнера, зависит от использования, но поскольку Карты неизменяемы, можно утверждать, что они лучше подходят для функционального стиля. – FuleSnabel