- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我要在 Immutable.js 映射上进行一系列更改。
我应该在什么时候更喜欢使用 withMutations
而不是创建中间的不可变映射?
来自 Immutable.js 文档:
If you need to apply a series of mutations to produce a new immutable Map, withMutations() creates a temporary mutable copy of the Map which can apply mutations in a highly performant manner. In fact, this is exactly how complex mutations like merge are done.
withMutations
?
最佳答案
当您想对一个对象上的多个更改进行分组时,您应该使用 withMutations。
因为每次更改都会创建一个克隆,所以连续多次更改会导致多个克隆。使用 withMutations 应用多个更改,然后在最后克隆一次。每个步骤的克隆意味着您正在读取每个更改的整个列表,这使其成为 n^2 操作。使用可变版本使其仅为 N。
如果您像其他答案所建议的那样随意地开始做事,这可能会造成巨大的性能损失。关键是在小型数据测试中可能无关紧要,但是如果您将其实时推送,然后对具有 300,000 条数据的数组而不是只有 100 个元素的测试数据进行大规模操作,会发生什么。在您的测试数据中,您做了 10,000 份您可能没有注意到的副本。在生产中,你会做 900,000,000,00 份拷贝,这可能会让你的电脑着火(不是真的,但你会卡住标签)。
我写了一个演示来演示性能差异 http://jsperf.com/with-out-mutatable
关于immutable.js - 我什么时候应该在 Immutable.js 的 map 上使用 `withMutations`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28510753/
我是否误解了它的用途或它的工作原理? var menuItems = Immutable.List.of( { parent_id: 0, id: 1 }, { parent_id: 1, i
Immutable.js 有一个很好的功能 withMutations ,它允许您使用临时可变对象构建复杂的不可变对象(immutable对象),从而不必在构建过程中创建新引用。 这对于转换如下内容非
我要在 Immutable.js 映射上进行一系列更改。 我应该在什么时候更喜欢使用 withMutations而不是创建中间的不可变映射? 来自 Immutable.js 文档: If you ne
我是一名优秀的程序员,十分优秀!