终极版性能下降

终极版性能下降

问题描述:

我的WebSocket获取短突发数据的“很多”,说的最多的1-2S并为每个1000个对象我必须这样做(添加存储):dispatch({ type: NEW, payload })终极版性能下降

而实际减速机(使用FB的不变性助手):

case NEW: 
    return update(state, { 
    data: { 
     [action.payload.tree.name]: 
    { $push: [action.payload.name] }, 
    }, 
    }); 

一次添加10个项目工作正常,100需要几秒钟和1000个几乎重载上最新的硬件上运行我的铬。

我也很难理解,为什么当添加100个项目时,例如,它不会重新呈现页面并在添加到商店时显示每个页面,而是等待添加所有出现的“突发”。

考虑在点击调度程序之前批量更新,并修改您的操作以接受整合的更新数组而不是单个更新。

+0

您能否提出一些建议来优化或避免复制大型对象?我有10k键(历史图表)的对象('id => object'的地图),在最后阶段 - 减速器非常缓慢。其他部分(甚至从批量API请求中排序和合并数据)经过优化,并作为微任务(通过setTimeout),但我真的不知道如何处理对象... – AlkH

+0

找到了一些可能的解决方案:https: //github.com/reactjs/redux/issues/606 – AlkH

+1

您是如何识别减速器的瓶颈?这可能是在商店更新后发生的DOM更新吗?如果DOM更新是关键,那么请查看只更新视口中的项目的窗口渲染。如果它真的在减速器中,那么你的数据是否真的需要在商店中生存,还是可以保持在本地状态/道具等? – squall3d