В распределенной вычислительной установке я хочу отправить unordered_set многим узлам. Я знаю о сериализации в C ++, например. используя boost::serialization
, Моя проблема с сериализацией заключается в том, что я сталкиваюсь с расходами на восстановление unordered_set
структура данных на каждом узле после получения сериализованных данных.
Моя идея состоит в том, чтобы написать собственный распределитель для unordered_set, который выделяет фиксированный размер непрерывной памяти и возвращает начальный адрес памяти после выделения. Затем я хочу получить байтовое представление unordered_set
, отправил его по проводам и сообщил принимающему узлу, что этот кусок памяти является unordered_set
,
Будет ли это работать? У вас, ребята, есть альтернативные идеи, как решить мою проблему? Или у вас есть какие-либо соответствующие указатели, например, написать такой распределитель? Любые отзывы приветствуются.
Спасибо!
Вероятно, это плохая идея по нескольким причинам:
Я бы просто отправил список пар ключ / значение. Вставьте их в хеш-таблицу, построенную на приемном конце.
Кроме того, имейте в виду, что при отправке чего-либо по проводам зачастую стоимость вычислительной мощности невелика по сравнению со стоимостью полосы пропускания. Хеш-таблицы занимают мало места — им нужно много пустых блоков, чтобы поддерживать производительность, близкую к O (1). В результате, вероятно, что общая производительность будет хуже, даже если вы сможете реализовать способ отправки хэш-таблицы по проводам как есть.
Других решений пока нет …