“散列缺点”是什么意思?

Bor*_*vić 5 algorithm optimization hash performance scala

何时使用它,为什么?

我的问题来自这句话:“用一些类散列 cons 并将它们的实例与引用相等进行比较”

Gav*_*ler 3

总结一下大家的答案:

\n
\n

ACL2(A Computational Logic for Applicative Common Lisp)是一个由编程语言、一阶逻辑的可扩展理论和机械定理证明器组成的软件系统。

\n

--维基 ACL2

\n

在计算机编程中,cons(发音为 /\xcb\x88k\xc9\x92nz/ 或 /\xcb\x88k\xc9\x92ns/)是 Lisp 编程语言大多数方言中的基本函数。cons 构造(因此得名)包含两个值或指向值的指针的内存对象。这些对象被称为(cons)单元、conses 或(cons)对。在 Lisp 术语中,“to cons x on y”的意思是用 (cons xy) 构造一个新对象。生成的对有一个左半部分,称为 car(第一个元素),和一个右半部分(第二个元素),称为 cdr。

\n

--维基百科的缺点

\n

从逻辑上讲,hons 只是 cons 的另一个名称,即以下是 ACL2 定理:

\n

(等于(hons xy)(cons xy))

\n

Hons 通常比 cons 运行得慢,因为在创建 hons 时,会尝试查看是否已经存在具有相同汽车和 cdr 的 hons。这涉及搜索和哈希表的使用。

\n

-- http://www.cs.utexas.edu/~moore/acl2/current/HONS.html

\n
\n

鉴于你的问题:

\n
\n

对某些类进行哈希 cons 并将它们的实例与引用相等性进行比较

\n
\n

看起来这hash cons是对 LISP 构造函数进行哈希处理,通过相等性比较来确定对象是否已存在的过程。

\n