不可变对象是无法改变状态的对象。它们可以更容易测试和调试,并且在并发编程中非常有用。然而,与其可变亲属相比,当前不可变集合的实现具有差的性能。例如,将关联数组实现为不可变的红黑树平均具有O(log(n))插入/删除,而哈希表平均具有O(1)插入/删除。
一般来说,不可变的集合可证明效率低于它们的可变表兄弟,或者我们有一天会发现同样快速的不可变实现?
答案 0 :(得分:1)
Okasaki表明通常可以开发不可变数据结构"具有等效的渐近性能"作为他们的命令对手。但是,不可变结构可能具有更差的常数。但是你可以在性能上付出代价,你会在程序员的时间里回来;正如你所说,使用和理解不可变集合要容易得多。通过这种方式,这个问题有点类似于当C如此之快时为什么我们使用其他语言的反复出现的问题。因为它更容易,我们重视程序员的时间。