2017-04-19 36 views

答えて

5

~=演算子のため、appenderは、~ではなく、appenderで置き換えられます。 は、実際に既存のものを追加せずに新しいコピーを作成します(古いものは変更しません)。これは、パフォーマンスが重要なときに一般的に回避すべき非効率的な利便性になります。

しかし、とにかく、~=appenderはそれほど違いはありません。主な違いは、~=は、GCに容量キャッシュを保持しています(Appenderと同じ)。互いに近接した少数のアレイを使用しているだけの場合は、おそらく2つの違いに気付かないでしょう。

しかし、同時に多くの配列を追加したり、マルチスレッドを実行している場合、Appenderのローカル容量記憶域は、 GCを使用して、異なるアレイ間を切り替える際にグローバルキャッシュをスラッシュしないようにします。

Appenderもカプセル化された出力範囲であるため、そのインターフェイスを必要とする一部の関数に渡すことができますが、通常の配列をほとんどの状況で適切なインポートで使用できます。

ループ内の1つの配列に追加するだけの場合は、~=を使用してください。実際には違いが分かりません(実際には、~=はこれらの状況しかし、その違いは最適化では無視できます)。アペンダ自体を(最終結果ではなく)格納したり、一度に複数の配列を実行したり、マルチスレッドのプログラムを作成している場合は、Appenderが大幅に向上しますそのグローバルGCキャッシュを使用する際の競合を避けるためです。

関連する問題