Erlang структуры данных - PullRequest
       24

Erlang структуры данных

1 голос
/ 27 февраля 2012

Я немного озадачен тем, какую структуру данных я могу использовать для быстрого выполнения следующих задач:

  1. Сохранить кортежи (можно изменить, чтобы они содержали ключевое слово).Будет что-то вроде {UserInfo, Time, TimeLvl}
  2. Удалить элемент, зная кортеж (или ключевое слово)
  3. Обновить все содержащиеся элементы, изменяя один из элементов кортежа примерно раз в секунду (TimeLvlЧем дольше пользователь будет ждать, тем выше).

Содержащиеся данные будут сильно меняться с приходом и уходом пользователей.

Какая структура данных лучше всего подходит для этого варианта использования

Ответы [ 2 ]

2 голосов
/ 27 февраля 2012

Взгляните на эту статью: Хранилища ключевых значений .

Чем решить, какая из представленных структур данных лучше всего подходит для вас.В статье также приводится эталонный тест.

Мне лично нравится gb_trees , который довольно быстрый и простой в использовании.

0 голосов
/ 27 февраля 2012

Взгляните на gproc

Он должен делать то, что вы хотите, он очень эффективен и сделан одним из создателей Эрланга, настолько надежный.

Вы можете проверить некоторые возможности gproc здесь , тогда вы узнаете, подходит ли это вашей проблеме

РЕДАКТИРОВАТЬ 1: После дополнительного поиска обновление значения записи gproc можно выполнить с помощью gproc:set_value(Key, Value).

РЕДАКТИРОВАТЬ 2: Таким образом, вы будете использовать:

gproc:reg({n, l, YouKey}, YourValue)   %% YouValue will be the tuple
gproc:set_value(YourKey, YourValue)
gproc:unreg({n, l, YourKey})
...