私はよく文字列を割り当てる場合、Appenderを使用するべきですが、Appender
の主な作業は~
の演算子とは異なります。アペンダーと〜の違いは何ですか?
メモリアロケーションでは、両方とも(afaik)がuse GCです。違いは何ですか?そしてどこが良いの?
私はよく文字列を割り当てる場合、Appenderを使用するべきですが、Appender
の主な作業は~
の演算子とは異なります。アペンダーと〜の違いは何ですか?
メモリアロケーションでは、両方とも(afaik)がuse GCです。違いは何ですか?そしてどこが良いの?
~=
演算子のため、appender
は、~
ではなく、appender
で置き換えられます。 は、実際に既存のものを追加せずに新しいコピーを作成します(古いものは変更しません)。これは、パフォーマンスが重要なときに一般的に回避すべき非効率的な利便性になります。
しかし、とにかく、~=
とappender
はそれほど違いはありません。主な違いは、~=
は、GCに容量キャッシュを保持しています(Appender
と同じ)。互いに近接した少数のアレイを使用しているだけの場合は、おそらく2つの違いに気付かないでしょう。
しかし、同時に多くの配列を追加したり、マルチスレッドを実行している場合、Appenderのローカル容量記憶域は、 GCを使用して、異なるアレイ間を切り替える際にグローバルキャッシュをスラッシュしないようにします。
Appender
もカプセル化された出力範囲であるため、そのインターフェイスを必要とする一部の関数に渡すことができますが、通常の配列をほとんどの状況で適切なインポートで使用できます。
ループ内の1つの配列に追加するだけの場合は、~=
を使用してください。実際には違いが分かりません(実際には、~=
はこれらの状況しかし、その違いは最適化では無視できます)。アペンダ自体を(最終結果ではなく)格納したり、一度に複数の配列を実行したり、マルチスレッドのプログラムを作成している場合は、Appender
が大幅に向上しますそのグローバルGCキャッシュを使用する際の競合を避けるためです。