Immutable.js 实现原理

Immutable collections for JavaScript

v4.0.0-rc.12 released on Oct 31, 2018

https://github.com/immutable-js/immutable-js/releases

https://immutable-js.github.io/immutable-js/

不变的数据一旦创建就无法更改,从而导致应用程序开发更加简单,无防御性复制,并能够以简单的逻辑实现高级的备忘和更改检测技术。

持久数据提供了一个可变API,该API不会就地更新数据,而是总会产生新的更新数据。

Immutable.js 提供了许多持久不变数据结构,包括:List, Stack, Map, OrderedMap, Set, OrderedSet 和 Record 。

$ yarn add immutable

$ npm i -S immutable

const { Map } = require('immutable');

const map1 = Map({ a: 1, b: 2, c: 3 });
const map2 = map1.set('b', 50); map1.get('b') + " vs. " + map2.get('b');
// 2 vs. 50

Performance tradeoffs

性能折衷

尽管值相等在许多情况下很有用,但它具有与引用相等不同的性能特征。

了解这些折衷方案可以帮助您决定在每种情况下都应使用哪种方法,尤其是在用于记忆某些操作时。

比较两个集合时,价值相等可能需要考虑每个集合中每个项目的时间复杂度为O(N)。

对于大量的价值收集,这可能会成为一项昂贵的操作。 尽管如果两者不相等且几乎不相似,则可以很快确定不平等。

相反,在比较两个具有引用相等性的集合时,仅需要比较对内存的初始引用,这不是基于集合的大小,而是具有O(1)的时间复杂度。

检查引用是否相等总是非常快,但是仅由于两个集合不是引用相等的,并不排除它们可能是值相等的可能性。

React.PureComponent

immutable objects 便于快速比较嵌套的数据

https://reactjs.org/docs/react-api.html#reactpurecomponent

refs



xgqfrms 2012-2020

www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!


Immutable.js 实现原理的更多相关文章

  1. 大话immutable.js

    为啥要用immutable.js呢.毫不夸张的说.有了immutable.js(当然也有其他实现库)..才能将react的性能发挥到极致!要是各位看官用过一段时间的react,而没有用immutabl ...

  2. Immutable.js 以及在 react+redux 项目中的实践

    来自一位美团大牛的分享,相信可以帮助到你. 原文链接:https://juejin.im/post/5948985ea0bb9f006bed7472?utm_source=tuicool&ut ...

  3. 深度浅出immutable.js

    这篇文章将讲述immutable.js的基本语法和用法. 1.fromJs()  Deeply converts plain JS objects and arrays to Immutable Ma ...

  4. Immutable.js – JavaScript 不可变数据集合

    不可变数据是指一旦创建就不能被修改的数据,使得应用开发更简单,允许使用函数式编程技术,比如惰性评估.Immutable JS 提供一个惰性 Sequence,允许高效的队列方法链,类似 map 和 f ...

  5. Immutable.js尝试(node.js勿入)

    最近做一些复杂html常常需要在页面做一些数据处理,常常在想如果 js有list 这种数据结构多少,今天逛github时 发现有Immutable.js 这个项目https://github.com/ ...

  6. React+Immutable.js的心路历程

    这段时间做的项目开发中用的是React+Redux+ImmutableJs+Es6开发,总结了immutable.js的相关使用姿势: Immutable Data 顾名思义是指一旦被创造后,就不可以 ...

  7. [Javascript] Creating an Immutable Object Graph with Immutable.js Map()

    Learn how to create an Immutable.Map() through plain Javascript object construction and also via arr ...

  8. [Javascript] Manage Application State with Immutable.js

    Learn how Immutable.js data structures are different from native iterable Javascript data types and ...

  9. [Immutable.js] Working with Subsets of an Immutable.js Map()

    Immutable.js offers methods to break immutable structures into subsets much like Array--for instance ...

随机推荐

  1. JMETER-正则表达式提取与查看变量是否提取正确

    一.应用场景说明: 在一个线程组中,B请求需要使用A请求返回的数据,也就是常说的关联,将上一个请求的响应结果作为下一个请求的参数,则需要对A请求的响应报文使用后置处理器,其中最方便最常用的就是正则表达 ...

  2. linux/git常用命令收集中

    1.进入文件夹 cd 文件名     进入某个文件 cd ..  返回上一级目录 cd /    进入根目录 cd ~ 切换到当前 cd -   切换到上一个目录 2.查看 pwd 文件名   查看路 ...

  3. unstable sort

    $sort (aggregation) - MongoDB Manual https://docs.mongodb.com/manual/reference/operator/aggregation/ ...

  4. Django runserver 默认多线程 监听文件变动

    django-admin and manage.py | Django documentation | Django https://docs.djangoproject.com/en/3.0/ref ...

  5. 从零开始学Java (五)条件选择

    if switch while do while for break continue 这块对于有语言基础的人来说可以跳过了. 注意有个equals方法. 1 public class Main { ...

  6. <script>元素

    简介 向HTML页面中插入JavaScript的主要方法,就是使用'<'script'>'元素. 标签的位置 现代Web应用程序一般都把全部的JavaScript饮用放在'<'bod ...

  7. LOJ10098

    USACO 2006 Jan. Gold 为了从F个草场中的一个走到另一个,贝茜和她的同伴们不得不路过一些她们讨厌的可怕的树.奶牛们已经厌倦了被迫走某一条路,所以她们想建一些新路,使每一对草场之间都会 ...

  8. Excel 如何使用 函数 实现传说中的 多条件中位数 (MEDIANIFS)?

    数据科学交流群,群号:189158789,欢迎各位对数据科学感兴趣的小伙伴的加入! 实际上Excel中根本没有MEDIANIFS,但我们可以通过一些方式进行实现: 比如如下图的需求,需要求这一列中,1 ...

  9. Spark SQL 自定义函数类型

    Spark SQL 自定义函数类型 一.spark读取数据 二.自定义函数结构 三.附上长长的各种pom 一.spark读取数据 前段时间一直在研究GeoMesa下的Spark JTS,Spark J ...

  10. Docker --Dockerfile(制作镜像)

    Dockerfile Dockerfile 是一个文本格式的配置文件,用户可以使用 Dockerfile 快速创建自定义的镜像 Dockerfile 常用指令 FROM 作用:指定基础镜像,Docke ...