【发布时间】:2014-05-18 19:47:50
【问题描述】:
不可变对象是不能改变状态的对象。它们可以更容易测试和调试,并且在并发编程中非常有用。但是,与可变集合相比,不可变集合的当前实现性能较差。例如,将关联数组实现为不可变的红黑树平均需要 O(log(n)) 次插入/删除,而哈希表平均需要 O(1) 次插入/删除。
一般来说,不可变集合的效率是否比它们的可变表亲低,或者我们有一天会找到同样快的不可变实现?
【问题讨论】:
-
@JoachimPileborg 注意到并固定为平均效率。
-
How does one implement hash tables in a functional language? 的可能重复项(至少有一个答案是关于那里的性能)
-
TL;DR 对于严格的纯函数式语言(在特定的计算模型中可能普遍适用也可能不普遍适用),对于惰性纯函数式语言,存在 O(log n) 减速因素不能证明或反驳渐近减速。
标签: functional-programming immutability