对于结构比较=
,你需要至少看到所有数据,所以它(几乎,见下面的注释)总是O(n)对于最坏情况下的列表和字符串(相等的值)。物理比较==
是O(1)你只是比较指针。
但请注意,在您自己的数据结构中,可以通过在值构造期间确保没有两个结构上相等的值将使用不同的物理内存来实现结构比较作为物理比较。这称为哈希值,您可以在this论文(doi)中找到更全面的解释。
通常,对于列表,您无法从l1 = l2
推断它们共享相同的物理内存,因为它取决于它们是如何构造的,因为OCaml不是哈希 - 缺点列表。这也适用于字符串。