【发布时间】:2019-04-18 21:52:24
【问题描述】:
我观察到 F# 的 Map 总是根据其键排序。 F# 是否提供任何替代有序字典的方法?
在使用 C# 字典作为替代方案之前,我想问一下。
【问题讨论】:
-
你为什么想要一张未排序的地图?它是否被订购通常不应该对您的代码产生任何影响 - 如果您使用地图,通常是因为您想要一种将值与键关联的方式 - 为此,实现并不重要(除了复杂性)。
-
@TomasPetricek 差异确实会影响代码,而复杂性是选择一种类型而不是另一种类型的重要原因。这就是为什么有这么多关于 Dictionary vs SortedDictionary
O(1)与O(log(n))的问题询问当您不关心订单时,访问是一个重要的区别 -
@TomasPetricek if that answer still holds then map 比 Dictionary 慢 5-40 倍。这在 Web 服务等高吞吐量应用程序中存在巨大差异,在这些应用程序中,此类延迟会转化为相同负载所需的服务器
-
@PanagiotisKanavos - PersistentHashMap 的实现方式可能比 F# 的默认
Map实现更快,尽管我不知道有任何基准测试。但是,在您看到基准之前,不要假设 F# 的 Map 慢 5-40 倍的数字适用于 PersistentHashMap;实现方式完全不同。 -
@PanagiotisKanavos 当然,不可变映射比可变哈希表慢,这是在某些情况下使用它的一个很好的理由,但这并不能回答我的问题。我的问题是,为什么 OP 想要一张未排序的地图?
标签: f#