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