2
私のWebSocketは短いバーストのデータの「ロット」を取得、1-2Sで最大1000個のオブジェクトが言うと、それぞれのために私は(店に追加する)これを実行する必要があります:dispatch({ type: NEW, payload })
Reduxのパフォーマンスの低下
そして、 (FBS不変ヘルパーを使用して)実際の減速:
case NEW:
return update(state, {
data: {
[action.payload.tree.name]:
{ $push: [action.payload.name] },
},
});
一度に10の項目を追加するには正常に動作し、100は数秒かかるし、最新のハードウェア上で実行されている1000のはかなりのオーバーロード私のクローム。
また、100個のアイテムを追加すると、ページを再レンダリングせず、ストアに追加されたとおりにそれぞれを表示するのではなく、「バースト」に含まれるすべてのものが追加されるまで待ちます。
ラージオブジェクトの最適化や回避をお勧めしますか?私は10kのキー(歴史的な図表)を持つオブジェクト(id =>オブジェクトのマップ)を持っており、最後の段階では非常に遅いです。他の部分(バッチ処理されたAPIリクエストからのデータの並べ替えやマージも)は、(setTimeoutを介して)マイクロタスクとして最適化されていますが、実際にはオブジェクト割り当てをどうするのか分かりません... – AlkH
いくつかの解決策が見つかりました。https: //github.com/reactjs/redux/issues/606 – AlkH
ボトルネックをレデューサーとしてどのように特定しましたか?あなたの店が更新された後に起こるDOMアップデートですか? DOMの更新がキーの場合は、ビューポート内の項目のみが更新されるウインドウ付きのレンダリングを調べます。減速機に実際に入っている場合、あなたのデータは実際に店舗に住む必要がありますか、それとも地元の州/小道具などに留まることができますか? – squall3d