Сериализация объектов как сырой памяти - PullRequest
1 голос
/ 15 февраля 2012

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

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

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

Ответы [ 2 ]

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

Очевидно, что этот тип сериализации будет быстрее, чем JSON в любой день (XML медленный по определению. На самом деле, я думаю, что это то, что означает L. Это должен был быть XMS, но потому что он такой медленный, они пропустили S и в конечном итоге с L). Однако я сомневаюсь, что в реальных сценариях он побьет эффективные двоичные сериализации, такие как буфер протокола Google.

Если ваши сериализованные сущности не содержат ссылок на другие сущности, и ваша схема памяти с двух сторон абсолютно одинакова (такое же выравнивание, тот же порядок и т. Д.), Вы получите немного производительности, копируя буфер памяти один раз, вместо того, чтобы делать это частями. Однако, как только вы восстановите ссылки, копирование памяти будет тривиальным по сравнению с поиском ссылочного объекта. Копируемая память быстрая , особенно если она выполняется по порядку, сводя к минимуму потери кеша.

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

Такие вещи, как обычные адреса памяти, полностью прерываются между сериализацией-десериализацией.Однако, если вы умны и осторожны, вы можете использовать механизм, где структура данных сериализуется.Может быть, перевести адреса в смещение байтов от базы?

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