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