C ++ Получить байтовое представление unordered_set * без * сериализации

В распределенной вычислительной установке я хочу отправить unordered_set многим узлам. Я знаю о сериализации в C ++, например. используя boost::serialization, Моя проблема с сериализацией заключается в том, что я сталкиваюсь с расходами на восстановление unordered_setструктура данных на каждом узле после получения сериализованных данных.

Моя идея состоит в том, чтобы написать собственный распределитель для unordered_set, который выделяет фиксированный размер непрерывной памяти и возвращает начальный адрес памяти после выделения. Затем я хочу получить байтовое представление unordered_set, отправил его по проводам и сообщил принимающему узлу, что этот кусок памяти является unordered_set,

Будет ли это работать? У вас, ребята, есть альтернативные идеи, как решить мою проблему? Или у вас есть какие-либо соответствующие указатели, например, написать такой распределитель? Любые отзывы приветствуются.

Спасибо!

0

Решение

Вероятно, это плохая идея по нескольким причинам:

  1. Часто реализация хеш-функции с одной машины на другую будет отличаться, поэтому ваша хеш-таблица больше не будет действительной на принимающей машине.
  2. Реализация хеш-таблицы часто будет содержать указатели. Вы не можете просто копировать указатели с одного компьютера на другой; это абсолютные адреса (на большинстве платформ).
  3. Возможно, что отправляющая и принимающая машины имеют разный порядок байтов (скажем, отправляющая машина — x86, а принимающая машина — POWER (например, XBox)), и в этом случае результаты, которые вы получите, будут полными бессмысленными.

Я бы просто отправил список пар ключ / значение. Вставьте их в хеш-таблицу, построенную на приемном конце.

Кроме того, имейте в виду, что при отправке чего-либо по проводам зачастую стоимость вычислительной мощности невелика по сравнению со стоимостью полосы пропускания. Хеш-таблицы занимают мало места — им нужно много пустых блоков, чтобы поддерживать производительность, близкую к O (1). В результате, вероятно, что общая производительность будет хуже, даже если вы сможете реализовать способ отправки хэш-таблицы по проводам как есть.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]