gpt4 book ai didi

immutable.js - 我什么时候应该在 Immutable.js 的 map 上使用 `withMutations`?

转载 作者:行者123 更新时间:2023-12-03 09:23:01 29 4
gpt4 key购买 nike

我要在 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com