Эффективный для памяти метод проверки членства - PullRequest
0 голосов
/ 07 апреля 2020

Сейчас я изучаю параллельную обработку. Сложность, с которой я сталкиваюсь, заключается в том, что объем данных, обрабатываемых в моих вычислениях, настолько велик, что при увеличении размера проблемы происходит переполнение памяти (экспоненциальный рост размера набора данных в соответствии с ростом размера проблемы). Мои вычисления - это онлайн-алгоритм, в котором все входные наборы данных в начале неизвестны.

Основная причина взрыва памяти связана с данными, хранящимися в hashmap (кукушка ха sh, использованный в моей работе). Эта карта ha sh используется для проверки членства в уже обработанных данных.

Так что я нашел способ уменьшить использование памяти.

В моем случае есть некоторые характеристики

  1. Входными и выходными данными являются только целочисленные значения (0 ~ 2 ^ 64).
  2. необходим только тест на членство (используются только «содержат» и «вставляют»).
  3. Но это не должно быть вероятностной c структура данных, такая как фильтр Блума (ложное срабатывание никогда не допускается)
  4. Структура чисел выходов не смежных, но разреженных (например,> 1, 16, 563 , 711, 1221 ...)

Я не ожидаю полного решения, но буду признателен за любую подсказку или вдохновение или информацию о связанных исследованиях или статьях (я не могу найти соответствующие статьи или исследования) ,

Прежде всего, я нахожу способ уменьшить использование памяти. для простого примера: из 1 ~ 64 значений сохраняются, я сохраняю пару данных диапазона (1, 64) и удаляю значения 1 ~ 64 (но в моем случае это непрактично, так как числовые шаблоны редки, как я утверждаю) выше).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...