2017-09-23 11 views
2

エリクシルの配列に最も近いものは何ですか?配列とは、一定の時間内にアクセスできる値のコンテナです。エリクシールの配列に最も近いもの

私はタプルを見て、しかし documentationに応じてきた

タプルも可算の実施の有無によって提案された「コレクション」タイプ(として使用されることを意味しませんタプル用のプロトコル):これらは、主に、複数の要素の固定サイズのコンテナとして使用されることを意図しています。

私は実際に何をしたいのか

: 私は配列n個プロセスを保存し、定期的にランダムなプロセスを選択し、それにメッセージを送りたいです。 他の提案もあります。

+0

プロセスを削除して挿入したいと思っていますか? – Dogbert

+0

@Dogbert:プロセスを一度追加しますが、ノードがダウンするのをシミュレートするために、プロセスを削除する必要があります(あまり頻繁でない操作)。 –

+1

タプルは 'O(n)'の削除を持っています。私はアクセス/挿入/削除のために 'O(log n)'時間を要するマップにこれを格納することに行きます。 Erlang/Elixirには、 'O(1)'アクセスと 'O(n)'削除より速いデータ構造はありません。 – Dogbert

答えて

1

。全体の構造をコピーするには、メモリ、一定のアクセス時間の連続保存され、編集結果:

  1. Tuple:私は、私は今後の参考のために、以下のリストてるElixir forumに多くの回答を得ました。 ではなく、はEnumerableプロトコルを実装していますか?
  2. linked-List:O(n)アクセス時間、接頭辞は接尾辞よりも安いです。 Enumerableプロトコルを実装します。
  3. Map:O(log n)読み取り、書き込み、削除の時間。また、Enumerableプロトコルを実装します。
  4. :arrayarrayのErlangのモジュール。
  5. registry:(プロセスを保存する場合にのみ適用可能)ローカルの分散型でスケーラブルなキーバリュープロセスストレージ。

また、注2および3(リストおよびマップ)are persistent data structures

0

エリキシルはアーラン介しアレイモジュールを有する:http://erlang.org/doc/man/array.html私はプロセスに働いていたのでlistregistryの組み合わせを使用して終了

+2

これのパフォーマンス特性は、命令型言語の配列とはまったく異なりますが、名前のみが同じです。 – Dogbert

関連する問題