一旦考虑到越来越大的字典占用更多的内存,在缓存层次结构中向下延伸,最终导致磁盘上的交换空间变慢,就很难说它是真正的 O (1)。字典的性能会随着它的变大而变慢,这可能会增加 O (logN)时间复杂度。不相信我?用1100、1000、10000等字典元素,最多可以达到1000亿,测量实际查找一个元素需要多长时间。
但是,如果假设系统中的所有内存都是随机访问内存,并且可以在固定的时间内访问,那么可以声称字典为 O (1)。这种假设很常见,尽管对于任何具有磁盘交换空间的机器来说都不是真的,而且在任何情况下,考虑到 CPU 缓存的不同级别,这种假设还是很有争议的。