Imutable 使用withMutations 提升性能

来源:互联网 发布:淘宝耐克正品折扣店 编辑:程序博客网 时间:2024/06/06 17:24

参考文档https://stackoverflow.com/questions/28510753/when-should-i-use-withmutations-on-a-map-in-immutable-js
https://facebook.github.io/immutable-js/

withMutations 主要用来提升性能,将需要多次创建的Imutable合并成一次。主要使用在需要对imutable 需要进行多次中间操作,最终返回一个Imutable的情况下

入门demo

const { List } = require('immutable')const list1 = List([1, 2, 3]);var list2 = list1.withMutations(function (list) {    // 经过优化,会合并中间装填,仅仅会生成最后一次Imutable    list.push(4).push(5).push(6);});// 每一个push会生成一个新的Imutablevar list3 = list1.push(4).push(5).push(6);console.log(list2.equals(list3))

从demo中可以看出 通过withMutations似乎和直接操作list 的效果是一样的,但是性能是不同的。

性能对比,可以看到直接操作list1 ,用时35毫秒,使用withMutations 优化后耗时10毫秒

const { List } = require('immutable') const list1 = List([1, 2, 3]);console.time("ori");for (var i = 0; i < 10000; i++) {    var list3 = list1.push(4).push(5).push(6);}console.timeEnd("ori");console.time("withMutations");for (var j = 0; j < 10000; j++) {    var list2 = list1.withMutations(function (list) {        list.push(4).push(5).push(6);    });}console.timeEnd("withMutations");