作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
不可变对象(immutable对象)是不能改变状态的对象。它们更容易测试和调试,并且在并发编程中非常有用。但是,与可变集合相比,当前不可变集合的实现性能较差。例如,将关联数组实现为一棵不可变的红黑树平均具有 O(log(n)) 次插入/删除,而哈希表平均具有 O(1) 次插入/删除。
一般来说,不可变集合是否比它们的可变表亲效率低,或者我们有一天会找到同样快的不可变实现?
最佳答案
Okasaki证明通常可以开发“具有等效渐近性能”的不可变数据结构作为它们的命令式对应物。然而,不可变结构可能具有更差的常量。但是,您可能为性能付出的代价确实会在程序员时间中得到返回;正如您所说,使用和理解不可变集合要容易得多。通过这种方式,这个问题有点类似于反复出现的问题,即为什么我们在 C 如此之快的情况下使用其他语言。因为它更容易,而且我们重视程序员的时间。
关于functional-programming - 不可变集合本质上是低效的吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23726166/
我了解了 NodeJS 的非阻塞特性,以及 I/O 操作如何实现非阻塞。我创建了一个简单的测试来证明这一点 var request = require('request'); var http = r
我是一名优秀的程序员,十分优秀!