- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图派生一个描述结构化值的Graphviz文件。这是出于诊断目的,因此我希望我的图形尽可能接近地反射(reflect)内存中的实际结构。我正在使用下面的方法将值映射到Graphviz顶点,以便当一个值具有两个或多个入站引用时可以重用顶点:
let same = (==)
module StateIdentity : Hashtbl.HashedType = struct
type t = R.meta_t state
let hash = Hashtbl.hash
let equal = same
end
module StateHashtbl = Hashtbl.Make (StateIdentity)
Hashtbl.hash
的文档表明,它既适用于
StateIdentity.equal = (=)
,也适用于
StateIdentity.equal = (==)
,但我想确保哈希表访问尽可能地接近O(1),因此,宁可不要让
Hashtbl.hash
走一个(可能很大)。这种情况)在每次查找中都包含对象图。
最佳答案
如果从OCaml的< ... >
对象类型的意义上使用“对象”一词,则可以使用Oo.id
为每个实例获取唯一的整数标识。否则,“是否存在值(value)标识的通用代理”的答案为“否”。在这种情况下,我的建议是从Hashtbl.hash
开始,评估它是否适合您的需求,否则设计您自己的哈希函数。
您还可以使用Hashtbl.hash_param
(请参阅documentation)来在散列期间打开值遍历的旋钮。请注意,Hashtbl代码使用链接列表存储相同哈希值的存储桶,因此,如果存在很多哈希冲突,则会触发线性搜索行为。最好将其他使用二进制搜索树的实现用于冲突桶。但话又说回来,您应该评估自己的情况,然后再转向更复杂的解决方案(在“好的情况下”具有较差的性能)解决方案。
关于hash - 基于物理身份的替代Hashtbl.hash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13052648/
我正在使用这段代码,并且会触发stackoverflow,如果我使用Extlib的Hashtbl则不会发生错误。有没有关于在没有 stackoverflow 的情况下使用专门的 Hashtbl 的提示
当我使用 Hashtbl.find 测量执行时间时,程序比不使用它时慢 16 倍。这是为什么? 请注意,无论是否有查找表(Map 或 Object),Node 中的等效代码都不会显示出太大差异(仅慢
我正在尝试使用 ppx 派生在 OCaml 中漂亮地打印包含哈希表(使用基础标准库)的自定义记录类型,但我需要实现 Hashtbl.pp 才能使其工作。 我试过在网上查看例子,我发现最好的例子是 ht
我是一名优秀的程序员,十分优秀!