2016-03-20 15 views
1

最近、reduxの研究を始めました。大規模なWebアプリケーションでのreduxのパフォーマンスについて私は心配していました。大規模なJSアプリケーションでのReduxパフォーマンス

私の質問は時間の経過とともに店舗の以前の状態を維持しているので、アプリケーションが十分に大きく、時間の経過とともに状態の変化が十分にあるとしましょう。これまでのすべての状態を維持するために時間の経過とともにメモリ消費量が増加しますか?

FYI:私はガベージコレクションのJavaの背景に基づいて考えて、しばらくしてから未使用のメモリを解放します。

答えて

2

immutable.jsで提供されるような不変のデータ構造を使用すると仮定すると、参照を追跡する以外の既存のデータ構造を追加または更新するときに以前の状態を覚えておくための追加コストはかかりません。これは、不変のデータ構造を使用する大きな利点の1つです。もちろん、状態の変化が完全な状態を何か他のものに置き換えることからなる場合、これらの利点は軽減される。

つまり、以前の状態を把握するためににはがありません。不変のデータ構造で行うほうがはるかに簡単で効果的です。

また、Reduxはデフォルトで以前の状態を記憶していません。これはあなたが目指しているような「時間旅行」機能を提供するredux devtoolsでのみ使用されます。これは開発中に非常に便利です。

+0

私の疑問をクリアしていただきありがとうございます。私はimmutable.jsについて見ましたが、それを続行せずに、その利点を深く掘り下げました。今、私はあなたの答えから明確な指示と明確な理解を持っています。もう一度ありがとう。 –

+0

わかりやすくするために、デフォルトのjavascriptオブジェクトと配列で作業したい場合は、immutable.jsは必要ありません。あなたはあなたのレデューサーに常に新しい値を作成することを確認する必要があります。オブジェクトの場合、Object.assignでこれを行うことができ、配列に対してはES6配列スプレッド演算子のようなものを使うことができます。 – bryanph

+0

上記のメソッドObject.assignとスプレッド演算子を使用してサンプルを作成しました。私はそれをクリアするためのパフォーマンスのおかげで主に疑問を抱いていました:)あなたが言及したように、不変のいくつかの例を行い、それも試してみて好奇心から物を試してみたいですが:) –

関連する問題