- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 redux 状态中有一个数据,大约有 100,000 个 json 记录(每个记录都有大约 8 个键值对)。
我在客户端编写了一个逻辑,每 30 秒刷新一次此数据(每 30 秒我调用服务器以获取要删除的记录和要添加的记录)。
我在我的reducer函数中进行了这个处理,为此我编写了一个方法“mergeUpdates”,它迭代state.data对象来标识要删除的内容和要插入的内容。
我使用 immutable 中的 fromJs(state.data).toJs 来克隆 state.data 并进行更新(state.data 不是不可变的)。但事实证明,这种克隆是非常昂贵的操作(100,000 条记录大约需要 2 秒),因此我删除了克隆并开始修改 state.data 本身,这导致了“分配给函数参数”lint 错误,因为我正在修改正在修改的数据传递给一个函数。
initialState = {
data: {}
}
doSomething(state, change) {
// iterates on state and updates state
state = doSomethingElse();
return state;
}
mergeUpdates(state, change) {
// some logic
state = doSomething(state, change)
// some more logic
return state;
}
export default function (state=initialState, action) {
switch (action.type) {
case REFRESH: {
return mergeUpdates(state.data, action.data)
}
}
}
处理此类情况的最佳实践是什么,我应该将状态分配给“mergeUpdates”和“doSomething”方法中的新引用并返回新引用,还是使状态内的数据不可变或其他内容?
例如:这被认为是一个好的做法吗?
doSomething(state, change) {
let newState = state;
// process change and return newState
return newState;
}
mergeUpdates(state, change) {
let newState = state;
// apply change on newState
newState = doSomething(newState, change);
// return newState
return newState;
}
最佳答案
您应该尽可能避免使用 Immutable.js 的 toJS()
和 fromJS()
函数。根据其作者 Lee Byron,this are the most expensive operations in the library .
我建议寻找不同的方法。一些建议:
Map.withMutations()
)关于javascript - CoSTLy 不可变操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49729986/
我有一个加权图,没有负权重,我想找到从一个节点到另一个节点的路径,试图最小化单个步骤的成本。我不需要最小化旅行的总成本(例如 Dijkstra 所做的),而是最小化平均步骤成本。但是,我有一个约束:K
我想使用 BigQuery 托管其他人可以查询的数据集,而不会对我的项目产生处理费用。我了解当我将数据集上传到项目时,存储成本与项目相关。我希望其他人能够发现我的数据集,通过 访问它他们的项目/帐户(
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
如果我们使用任何连接池框架或 Tomcat JDBC 池,那么打开和关闭数据库连接的成本是多少? 每当需要进行数据库操作时频繁打开和关闭数据库连接是一个好习惯吗? 或者同一个连接可以跨不同方法进行数据
如果我们使用任何连接池框架或 Tomcat JDBC 池,那么打开和关闭数据库连接的成本是多少? 每当需要进行数据库操作时频繁打开和关闭数据库连接是一个好习惯吗? 或者同一个连接可以跨不同方法进行数据
就软件而言,运营成本高昂或资源成本高昂是什么意思。当我遇到一些文档时,他们提到了诸如每次打开文件都是一项昂贵的操作之类的内容。我可以有更多这样的例子(数据库连接是一项昂贵的操作,线程池是一个更便宜的操
我的 redux 状态中有一个数据,大约有 100,000 个 json 记录(每个记录都有大约 8 个键值对)。 我在客户端编写了一个逻辑,每 30 秒刷新一次此数据(每 30 秒我调用服务器以获取
当我的应用程序启动时,我用我的 fragment 首选项中的值填充了一个容器类。我的想法是处理 SharedPreferences 和 PreferenceManager 一次,因为我猜它们很重。 这
这个问题在这里已经有了答案: 关闭 9 年前。 Possible Duplicate: How expensive is it to dereference a pointer in C++? 如果
我们如何解释 WEKA 中的成本矩阵?如果我有 2 个类要预测(第 0 类和第 1 类)并且想要将第 0 类的分类惩罚为第 1 类(比如惩罚加倍),那么矩阵格式究竟是什么? 是吗 : 0 10 20
我想通过以下方式保护对资源的访问: 所有线程都可以并发读取,更新期间除外(如果更新不是原子的)。 只能给一个线程分配更新任务,直到下一次需要更新。 这似乎是一个使用适当的 lock 或可能使所有操作成
我想知道是否有 (N) 个双 vector ,每个 vector 的长度都很大,例如 10,000,并且我想通过创建 (N) 个线程来对操作进行线程化(每个 vector 乘以 3)。 我想知道使用并
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 6 年前。 Improv
假设我们有一个数据库类(在 PHP 中——但它应该与任何语言相关),它在每次有查询时打开到 MySQL 服务器的连接。有些脚本会在每次执行时查询一次数据库,有些会查询两次,在同一次执行中最多可能有 4
我正在编写一个软件,其中有一部分处理读写操作。我想知道这些操作对 csv 文件的成本有多大。还有其他消耗时间更少的文件格式吗?因为我必须在每个周期结束时写入和读取 csv 文件。 最佳答案 读写操作取
我正在学习 C 并且对我在网上阅读的内容感到困惑。 在 http://www.cs.bu.edu/teaching/c/stack/array/ 我可以阅读: Let's look at the fu
我下学期要参加 comp 2210(数据结构),我一直在做在线发布的夏季学期的作业。到目前为止,我在做作业时没有遇到任何问题。看看下面的作业 4,看看你是否能给我一个关于如何处理它的提示。请不要提供完
我需要在页面上放置一个大约 20 个 Vue 组件。每个组件在挂载时都会为自己创建一个 onSnapshot,相应地,当它被删除时会创建一个 unsubscribe()。 const ref = fi
这个问题在这里已经有了答案: 关闭 9 年前。 Possible Duplicate: How costly is .NET reflection? 我目前的编程心态是反射是我最好的 friend
我刚刚开始掌握 Go(两天前开始,写了不到 1000 行),我还在想一些习语。 我需要按长度降序对一段字符串进行排序。我确实喜欢这样: func ... { ... do business .
我是一名优秀的程序员,十分优秀!