我是.NET编程的新手。对不起,如果之前已经问过这个问题。
我目前正在学习F#。 Dictionary,Hashtable和Map有什么区别?我什么时候应该使用它们?
我还有一个标题中没有提到的问题。我什么时候应该使用Async.RunSynchronously?这似乎与我自相矛盾,所以我确信我错过了一些东西。
答案 0 :(得分:23)
Dictionary,Hashtable和Map之间的选择取决于用例。但是你应该知道每个人的特征。这不是一个详尽的列表,只是您可能想要开始的一些关键差异:
如果您正在进行多次写入,Hash表集合的填充率性能明显优于AVL树。
使用其键从Dictionary中检索值非常快,接近 O(1),因为Dictionary类是作为哈希表实现的。
F#maps被实现为不可变的AVL树,这是一种形成自平衡二叉树的高效数据结构。 AVL树的效率众所周知,它们可以在 O(log n)时间内搜索,插入和删除树中的元素,其中n是树中元素的数量。
对于地图用例,如果你有一组静态数据(例如你的应用程序启动时加载的配置数据)你需要经常按键查找,Map就像选择一样好。任何,它在这种情况下的不变性确保静态数据不会被错误地修改并且对性能影响很小,因为一旦初始化你就不需要改变它。
Async.RunSynchronously
运行提供的异步计算并等待其结果。例如,您可以在F#交互式窗口中使用它来测试异步工作流。