Q : Какой хороший способ получить данные выровненные без копирования всего буфера?
Что ж, учитывая, что ZeroMQ (как есть) основан на автономно работающем Context()
-экземпляре, который по собственному праву обещал Zero-Copy по тем же причинам, связанным с производительностью, местом хранения сообщения определяется внутренними политиками Context()
, которые не "видят", тем меньше "подчиняются" любым из capnp
-приятий.
Если только один рефактор не только zmq_msg_init()
per se * , но все связанные с этим внутренние функции, связанные с производительностью, внутри ZeroMQ, чтобы внешне "обеспечивать" и "сохранять" своего рода (здесь мотивировано capnp
, вызывает Примерное «конфликт интересов» ) Высокоуровневое идеологизированное управление памятью (согласованные политики распределения, повторного использования и освобождения), кажется, существует нулевой шанс на ожидание такое поведение от уже зрелого, умного и стройного (как есть) и функциональный инструмент нужного размера с достаточным оснащением, предназначенный для обеспечения быстрого, с минимальной задержкой и практически линейного масштабируемого инструмента обмена сообщениями / сигнализации.
Q : есть ли способ получить сообщение в памяти с выравниванием по словам без потери производительности - например, отключение нулевое копирование в zmq?
AFAIK, никогда не встречал такого конфигурация «через» опубликованный API (начиная с v2. + до v4.3 с 2020 / Q1) .
Может попытаться отсканировать исходный код с комментариями, где любой такой трюк может оказались на месте.